我正在寻找一个类似于lerna ls
的NPM命令,它可以打印出所有工作区。
例如,假设我在packages
子目录中有package1
和package2
,我的package.json如下所示:
"workspaces": [
"./packages/*"
]
我想要一份NPM7工作空间的列表。对于我期望的例子:
- 软件包/软件包1
- 包裹/包裹2
我希望npm ls -p --depth 0
能做到这一点,但不幸的是,它也打印出了其他依赖项。
我想我可以使用npm ls -json
来解析顶级依赖关系。然而,我希望有更好的方法?
npm@8
:中有一种新方法
npm query .workspace | jq -r '.[].location'
返回预期结果:
packages/package1
packages/package2
仍然需要jq
,但比以前稍微干净一些。
所以现在我使用JQ。
示例:npm ls --production --depth 1 -json | jq -r '.dependencies[].resolved'
对于我的例子,这导致:
file:../../packages/package1
file:../../packages/package2
我不知道为什么它会在前面添加../../
。所以为了进一步改进这一点:npm ls --production --depth 1 -json | jq -r '.dependencies[].resolved[11:]'
返回预期结果:
packages/package1
packages/package2
我还在这里提交了一个功能请求:https://github.com/npm/cli/issues/4086