运行 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.json
的 dependency
部分。
无论哪种方式,引号都需要去;所以 运行 使用以下参数的搜索和替换操作:
搜索:^.+"(.+?)",$
替换:</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
通常,我 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.json
的 dependency
部分。
无论哪种方式,引号都需要去;所以 运行 使用以下参数的搜索和替换操作:
搜索:^.+"(.+?)",$
替换:</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