bash-可安装列出的npm全局软件包的输出命令

时间:2018-07-26 01:14:24

标签: node.js bash npm

我知道npm ls -g --depth=0会产生输出

C:\Users\leon\AppData\Roaming\npm
+-- create-react-app@1.5.2
+-- eslint@5.2.0
+-- prettier@1.13.7
`-- serve@9.4.0

我正在寻找一个bash命令,该命令可以根据上述输出输出以下内容:

npm i -g create-react-app
npm i -g eslint
npm i -g prettier
npm i -g serve

2 个答案:

答案 0 :(得分:2)

您可以使用sed工具进行处理

npm ls -g --depth=0 | sed -nE 's/^\W+/npm i -g /p'

答案 1 :(得分:2)

这里是@ 0.sh发布的答案的略微改进

npm ls -g --depth=0 |
sed -n 's/^[^A-Za-z0-9_]*//;s/@.*$//p' |
xargs -n 1 npm i -g

将代码移至xargs会使生成的命令得以执行,而不仅仅是打印。 (如果不想这样做,可以xargs -n 1 echo npm i -g恢复为仅打印,或将npm i -g移回sed替代中。)

如果您愿意,可以使用Awk或其他方法进行提取。甚至grep;

npm ls -g --depth=0 |
grep -o '[A-Za-z][^@]*' |
xargs -n 1 npm i -g

请注意,尽管npm ls可以选择生成--parseable--json输出格式,这通常是您在脚本中应该使用的格式。

npm ls --global --parseable --depth=0 |
xargs -n 1 npm install --global