npm: disable postinstall script for package

前端 未结 4 1149
傲寒
傲寒 2020-12-07 13:35

Is it any npm option exist to disable postinstall script while installing package? Or for rewriting any field from package.json?

相关标签:
4条回答
  • 2020-12-07 14:06

    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.

    0 讨论(0)
  • 2020-12-07 14:09

    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
    
    0 讨论(0)
  • 2020-12-07 14:16

    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
    
    0 讨论(0)
  • 2020-12-07 14:17

    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.

    0 讨论(0)
提交回复
热议问题