npm: disable postinstall script for package
node.jsNpmnode.js Problem Overview
Is it any npm option exist to disable postinstall script while installing package? Or for rewriting any field from package.json?
node.js Solutions
Solution 1 - node.js
It's not possible to disable only postinstall
scripts. However, you can disable all scripts using:
$ npm install --ignore-scripts
As delbertooo mentionned in the comments, this also disables the scripts of the dependencies.
Solution 2 - node.js
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.
Solution 3 - node.js
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.
- Create a script
./scripts/skip.js
if (process.env.SKIP_BUILD) {
process.exit(0);
} else {
process.exit(1);
}
- In your package.json file
"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
Solution 4 - node.js
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
Solution 5 - node.js
If you're using NPM>=7, you can also remove the postinstall
script temporarily:
npm set-script postinstall ""
npm install
Source: https://docs.npmjs.com/cli/v7/commands/npm-set-script/