运行 yarn why 一次处理所有包

Run yarn why for all packages at once

通常,我 package.json 中的每个模块都会 运行 yarn why <package-name>。有没有办法一次性告诉你项目中的每个包 yarn 到 运行 yarn why

这似乎是不可能的...当使用命令 yarn why node_modules/* 时,yarn 输出以下消息:

Too many arguments, maximum of 1.

这让我相信不可能在多个包上调用 yarn why

由于 yarn 似乎没有提供内置方法来检查为什么安装了所有包,您可以只在每个包的 for 循环中调用 yarn why

这对于多个包来说肯定是很麻烦的。因此,我们需要一种简单的方法来获取该包列表。

您可以使用 jq 将依赖项过滤到一个临时文件中,或者只使用您选择的文本编辑器并手动保存 package.jsondependency 部分。

无论哪种方式,引号都需要去;所以 运行 使用以下参数的搜索和替换操作:

搜索:^.+"(.+?)",$
替换:</code></p> <p>现在您可以在临时文件中的每个条目的 for 循环中执行 <code>yarn why

# Print json-array into installed_modules
cat package.json | jq '.dependencies | keys' > installed_modules                                   

# edit / search-replace in file 
[…]  

# Loop through each module and run `yarn why` on it
# This is fish-shell for-loop syntax. 
# You might have to look up how your shell (i.e. bash) does this
for module in (cat installed_modules); 
    yarn why $module;
end