Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Bash-可以安装列出的npm全局软件包的输出命令_Node.js_Bash_Npm - Fatal编程技术网

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.