npm: désactiver le script de post-installation pour le package


Réponses:


268

Il n'est pas possible de désactiver uniquement les postinstallscripts. Cependant, vous pouvez désactiver tous les scripts en utilisant:

$ npm install --ignore-scripts

Comme delbertooo l'a mentionné dans les commentaires, cela désactive également les scripts des dépendances.


2
THX. C'est exactement ce dont j'ai besoin. Où puis-je trouver de telles options? Ceci n'est pas décrit dans 'npm help install', 'npm help config' et 'npm help scripts'.
farwayer

3
J'ai vérifié le code directement: github.com/npm/npm/blob/master/lib/build.js#L179
Gergo Erdosi

69
Mise en garde! L'option --ignore-scriptsdésactive TOUS les scripts - même de vos dépendances. Si vos dépendances ont besoin d'exécuter des scripts pour, par exemple, installer des binaires, ils peuvent être endommagés / incomplets.
delbertooo

7
Alors y a-t-il une technique pour installer node_modules (et tous leurs scripts) mais ignorer uniquement les scripts du paquet principal?
Derrick

3
Non seulement cela, mais --ignore-scriptsou l'option de configuration associée (que j'ai définie globalement) signifiera également que cela npm run startne fera rien en silence et signalera le succès. Étonner.
Ash Berlin-Taylor

21

Vous pouvez également activer les paramètres dans le fichier de configuration npm.

npm config set ignore-scripts true

Remarque: Cela désactivera les scripts pour tous les packages NPM.


2
Cela devrait être la réponse. Voir l'article de blog npm: blog.npmjs.org/post/141702881055/…
Pieter Venter le

Notez qu'il désactive également la possibilité d'exécuter manuellement npm run …- il ne fera simplement rien, sans aucun avertissement.
CodeManX

4

Pour ce faire pour votre propre bibliothèque, je recommande quelque chose de simple comme:

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

puis faites votre installation npm avec:

your_pkg_skip_postinstall="yes" npm install

1
Merci! Cela fonctionne très bien si vous essayez simplement de désactiver votre propre script mais pas TOUS les scripts dans toutes les dépendances.
Brian Neisler

@BrianNeisler yer très bienvenu, se sent toujours bon d'aider les autres. En passant, je pense que les doubles crochets [[]] pourraient être meilleurs que les crochets simples pour la plupart des cas d'utilisation, pas sûr que cela.
Alexander Mills

2

Je voulais désactiver le script de post-installation pour mon projet, mais je voulais que tous les scripts des dépendances de mon projet s'exécutent quand je le fais npm install. C'est ce que j'ai fini par faire.

  1. Créer un script ./scripts/skip.js
if (process.env.SKIP_BUILD) {
    process.exit(0);
} else {
    process.exit(1);
}
  1. Dans votre fichier package.json
 "scripts": {
  ...
  "postinstall": "node ./scripts/skip.js || npm run build",
  ...
 }

maintenant, définissez simplement la variable d'environnement SKIP_BUILD = 1 pour empêcher votre paquet de se construire et vos dépendances se construiront très bien

SKIP_BUILD=1 npm install
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.