如何使用Yarn 2+列出工作区中所有公开的工作空间
Yarn 2 实现等价 lerna list 功能方案
核心需求匹配
默认yarn workspaces list会返回所有工作区包(含私有包),我们可以通过内置参数+轻量处理实现过滤私有包、输出可解析格式的需求。
具体实现方式
1. 输出JSON格式(适合程序解析)
- Yarn 2.4及以上版本直接用内置参数
运行以下命令即可直接输出过滤私有包后的JSON格式结果,每行对应一个公开包的信息,包含包名、路径等字段:
yarn workspaces list --json --no-private
如果需要输出仅包含包名的标准JSON数组,搭配jq工具实现:
yarn workspaces list --json --no-private | jq -s 'map(.name)'
- 低版本Yarn 2无--no-private参数的场景
通过verbose参数带出包的私有标识,自行过滤:
yarn workspaces list --verbose --json | jq -s 'map(select(.private != true) | .name)'
2. 输出纯文本换行格式(适合脚本处理)
仅输出公开包名,每行一个:
- 依赖jq的轻量实现
yarn workspaces list --json --no-private | jq -r '.name'
- 无额外依赖的Node.js原生实现
不需要安装jq,直接用系统自带的Node.js处理:
yarn workspaces list --verbose --json | node -e " const content = require('fs').readFileSync(0, 'utf8').trim() content.split('\n').forEach(line => { const pkg = JSON.parse(line) if (!pkg.private) console.log(pkg.name) }) "
内容的提问来源于stack exchange,提问作者sydd
相关产品推荐
相关产品推荐

