禁用包的postinstall脚本

是否存在任何npm选项来禁用postinstall脚本,同时安装包?或者从package.json重写任何字段?

96203 次浏览

不可能只禁用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时运行项目依赖项的所有脚本。 这就是我最后要做的。

  1. 创建一个脚本./scripts/skip.js
if (process.env.SKIP_BUILD) {
process.exit(0);
} else {
process.exit(1);
}
  1. 在你的包裹里。json文件
 "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
< p >来源: https://docs.npmjs.com/cli/v7/commands/npm-set-script/ < / p >