Esiste qualche opzione npm per disabilitare lo script postinstall durante l'installazione del pacchetto? O per riscrivere qualsiasi campo da package.json?
Esiste qualche opzione npm per disabilitare lo script postinstall durante l'installazione del pacchetto? O per riscrivere qualsiasi campo da package.json?
Risposte:
Non è possibile disabilitare solo gli postinstall
script. Tuttavia, puoi disabilitare tutti gli script usando:
$ npm install --ignore-scripts
Come ha detto Delbertooo nei commenti, questo disabilita anche gli script delle dipendenze.
--ignore-scripts
disabilita TUTTI gli script, anche dalle tue dipendenze. Se le tue dipendenze devono eseguire script per installare, ad esempio, alcuni file binari, potrebbero rompersi / essere incompleti.
--ignore-scripts
, o l'opzione di configurazione associata (che ho impostato a livello globale) significherà anche che npm run start
non farà nulla in silenzio e segnalerà il successo. Stupire.
È inoltre possibile abilitare le impostazioni nel file di configurazione di npm.
npm config set ignore-scripts true
Nota: questo disabiliterà gli script per tutti i pacchetti NPM.
npm run …
- semplicemente non farà nulla, senza alcun preavviso.
Per fare questo per la tua libreria, ti consiglio qualcosa di semplice come:
#!/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
quindi installa npm con:
your_pkg_skip_postinstall="yes" npm install
Volevo disabilitare lo script postinstallazione per il mio progetto, ma volevo che tutti gli script delle dipendenze del mio progetto fossero eseguiti quando lo facevo npm install
. Questo è quello che ho finito per fare.
./scripts/skip.js
if (process.env.SKIP_BUILD) {
process.exit(0);
} else {
process.exit(1);
}
"scripts": {
...
"postinstall": "node ./scripts/skip.js || npm run build",
...
}
ora basta impostare la variabile d'ambiente SKIP_BUILD = 1 per impedire la compilazione del pacchetto e le dipendenze verranno compilate correttamente
SKIP_BUILD=1 npm install