npm: desativa o script postinstall para o pacote


Respostas:


267

Não é possível desativar apenas postinstallscripts. No entanto, você pode desativar todos os scripts usando:

$ npm install --ignore-scripts

Como delbertooo mencionado nos comentários, isso também desabilita os scripts das dependências.


2
THX. É exatamente disso que eu preciso. Onde posso encontrar essas opções? Isso não está descrito em 'npm help install', 'npm help config' e 'npm help scripts'.
farwayer


69
Cuidado! A opção --ignore-scriptsdesativa TODOS os scripts - mesmo de suas dependências. Se suas dependências precisarem executar scripts para, por exemplo, instalar alguns binários, elas podem ser interrompidas / incompletas.
delbertooo

7
Então, existe uma técnica para instalar node_modules (e todos os seus scripts), mas ignorar apenas os scripts do pacote principal?
Derrick

3
Não apenas isso, mas --ignore-scriptsa opção de configuração associada (que eu defino globalmente) também significará que npm run startsilenciosamente nada fará e relatará sucesso. Surpreender.
Ash Berlin-Taylor


4

Para fazer isso em sua própria biblioteca, recomendo algo simples como:

#!/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

instale seu npm com:

your_pkg_skip_postinstall="yes" npm install

1
Obrigado! Isso funciona muito bem se você está apenas tentando desativar seu próprio script, mas não TODOS os scripts em todas as dependências.
Brian Neisler

@BrianNeisler é muito bem-vindo, sempre se sente bem em ajudar outras pessoas. A propósito, acho que colchetes duplos [[]] podem ser melhores que colchetes simples para a maioria dos casos de uso, não tenho certeza.
Alexander Mills

2

Queria desabilitar o script pós-instalação para o meu projeto, mas queria que todos os scripts das dependências do meu projeto fossem executados quando o fiz npm install. Foi isso que acabei fazendo.

  1. Crie um script ./scripts/skip.js
if (process.env.SKIP_BUILD) {
    process.exit(0);
} else {
    process.exit(1);
}
  1. No seu arquivo package.json
 "scripts": {
  ...
  "postinstall": "node ./scripts/skip.js || npm run build",
  ...
 }

agora apenas defina a variável de ambiente SKIP_BUILD = 1 para impedir a criação do seu pacote e suas dependências criarão muito bem

SKIP_BUILD=1 npm install
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.