是否存在任何npm选项来禁用postinstall脚本,同时安装包?或者从package.json重写任何字段?
不可能只禁用postinstall脚本。然而,您可以禁用所有脚本使用:
postinstall
$ npm install --ignore-scripts
正如delbertooo在评论中提到的,这也会禁用依赖项的脚本。
对于你自己的库,我推荐一些简单的方法:
#!/usr/bin/env bash ## this is your postinstall.sh script: set -e; if [ "$your_pkg_skip_postinstall" == "yes" ]; then echo "skipping your package's postinstall routine."; exit 0; fi
然后用以下方法安装NPM:
your_pkg_skip_postinstall="yes" npm install
你也可以在npm配置文件中启用设置。
npm config set ignore-scripts true
注意:这将禁用所有NPM包的脚本。
我想禁用项目的postinstall脚本,但希望在执行npm install时运行项目依赖项的所有脚本。 这就是我最后要做的。
npm install
./scripts/skip.js
if (process.env.SKIP_BUILD) { process.exit(0); } else { process.exit(1); }
"scripts": { ... "postinstall": "node ./scripts/skip.js || npm run build", ... }
现在只需设置环境变量SKIP_BUILD=1,以防止构建包,您的依赖项将正常构建
SKIP_BUILD=1 npm install
如果你正在使用NPM >= 8,你也可以暂时删除postinstall脚本:
npm pkg set scripts.postinstall="echo no-postinstall" npm install
或者在NPM 7中,像这样:
npm set-script postinstall "" npm install