如何使用 Yarn 2+ 列出每个 public 工作区?

How to list every public workspace with Yarn 2+?

我正在尝试重新创建 lernalist functionality with Yarn 2, I need to get a list of every public package's name in the workspace. yarn workspaces list 可以列出工作场所的所有包裹,但它 returns 每个包裹,包括私人包裹。

我还需要可解析格式的结果,例如JSON,或者只是带有一些换行符的普通输出。

事实证明这很棘手,但可行:

yarn constraints query "workspace(Cwd), \+ workspace_field(Cwd, 'private', true), workspace_ident(Cwd, Ident)" --json

这会给你一个像这样的 NDJSON 流:

{"Cwd":"packages/yarnpkg-sdks","Ident":"@yarnpkg/sdks"}
{"Cwd":"packages/yarnpkg-shell","Ident":"@yarnpkg/shell"}