我知道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
答案 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