It's not possible to disable only postinstall
script. However, you can disable all scripts using:
$ npm install --ignore-scripts
As delbertooo mentioned in the comments, this also disables the scripts of the dependencies.
Pergunta
Is it any npm option exist to disable postinstall
script while installing package? Or for rewriting any field from package.json
?
Solução
It's not possible to disable only postinstall
script. However, you can disable all scripts using:
$ npm install --ignore-scripts
As delbertooo mentioned in the comments, this also disables the scripts of the dependencies.
Outras dicas
You can also enable the settings in npm configuration file.
npm config set ignore-scripts true
Note: This will disable scripts for all NPM packages.
I wanted to disable postinstall script for my project but wanted all scripts of my project's dependencies to run when I do npm install
.
This is what I ended up doing.
./scripts/skip.js
if (process.env.SKIP_BUILD) {
process.exit(0);
} else {
process.exit(1);
}
"scripts": {
...
"postinstall": "node ./scripts/skip.js || npm run build",
...
}
now just set the environment variable SKIP_BUILD=1 to prevent your package from building and your dependencies will build just fine
SKIP_BUILD=1 npm install
To do this for your own library, I recommend something simple like:
#!/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
then do your npm install with:
your_pkg_skip_postinstall="yes" npm install
If you're using NPM >= 8, you can also remove the postinstall
script temporarily:
npm pkg set scripts.postinstall="echo no-postinstall"
npm install
Or with NPM 7, like so:
npm set-script postinstall ""
npm install
Source: https://docs.npmjs.com/cli/v7/commands/npm-set-script/
Define .npmrc
and set ignore-scripts=true
.