Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

npm: disable postinstall script for package

Tags:

node.js

npm

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.


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.

  1. Create a script ./scripts/skip.js
if (process.env.SKIP_BUILD) {
    process.exit(0);
} else {
    process.exit(1);
}
  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

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>=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/