在 npm install 命令中评估 Bash 表达式

Evaluated Bash expression within npm install command

我想从一个简单的文本文件安装一个软件包列表(是的,package.json 就是为此而设计的)

我的第一个方法是这样的:

npm i $(cat builder-dev-packages.txt) -g 类似这样:docker rm $(docker ps -a -f status=exited -q)

但我仍然将该命令评估为无效标签名称。

npm ERR! code EINVALIDTAGNAME ": Tags may not have any characters that encodeURIComponent encodes.

我是否需要使用 while 循环 运行 通过我的 npm 命令而不是评估 cat 语句的输出?此脚本仍然为 txt 文件中的每一行提供相同的错误。

#!/bin/bash
filename='./builder/builder-dev-packages.txt'
echo Start
while read p; do 
    npm i $p --dry-run
done < $filename

这是我的 .txt 文件:

atob
colors
comment-parser
del
gulp
gulp-autoprefixer
gulp-clean-css
gulp-concat
gulp-connect
gulp-filter
gulp-htmlmin
gulp-if
gulp-nodemon
gulp-rename
gulp-replace
gulp-rewrite-css
gulp-rtlcss
gulp-sass
gulp-sourcemaps
gulp-uglify-es
lazypipe
merge-stream
node-sass
pretty
yargs

npm install 接受由 space 分隔的包列表,但你传递给它的是一个用新行分隔的包列表,这就是你遇到问题的原因。

试试下面的方法

npm install -g $(cat builder-dev-packages.txt | tr "\n" " ")