Node.js Bash-可以安装列出的npm全局软件包的输出命令
我知道Node.js Bash-可以安装列出的npm全局软件包的输出命令,node.js,bash,npm,Node.js,Bash,Npm,我知道npmls-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 您可以
npmls-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
您可以使用sed
工具来处理此问题
npm ls -g --depth=0 | sed -nE 's/^\W+/npm i -g /p'
以下是@0.sh发布的答案的一点改进
npm ls -g --depth=0 |
sed -n 's/^[^A-Za-z0-9_]*//;s/@.*$//p' |
xargs -n 1 npm i -g
将代码移动到xargs
会导致执行生成的命令,而不仅仅是打印。(如果您不想这样做,您可以xargs-n1 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
请注意,npmls
具有生成--parseable
或--json
输出格式的选项,这通常应该在脚本中使用
npm ls --global --parseable --depth=0 |
xargs -n 1 npm install --global
这真的很接近,但是如何在没有后续版本的情况下生成它们呢代码>就在开头的单引号之后。\W+
不能正确移植;可能改为切换到[^A-Za-z0-9.]*
。然后你也可以删除不可移植的-E
选项。@tripleee你能发布完整的命令吗?plz,我对bash不太熟悉。我现在已经这么做了,并且修复了我在回答中注意到的一个打字错误+1.