Gibt es eine npm-Option zum Deaktivieren des Nachinstallationsskripts während der Installation des Pakets? Oder um ein Feld aus package.json neu zu schreiben?
Gibt es eine npm-Option zum Deaktivieren des Nachinstallationsskripts während der Installation des Pakets? Oder um ein Feld aus package.json neu zu schreiben?
Antworten:
Es ist nicht möglich, nur postinstall
Skripte zu deaktivieren . Sie können jedoch alle Skripte deaktivieren, indem Sie:
$ npm install --ignore-scripts
Wie in den Kommentaren erwähnt, deaktiviert dies auch die Skripte der Abhängigkeiten.
--ignore-scripts
deaktiviert ALLE Skripte - auch von Ihren Abhängigkeiten. Wenn Ihre Abhängigkeiten Skripte ausführen müssen, um beispielsweise einige Binärdateien zu installieren, können diese beschädigt / unvollständig sein.
--ignore-scripts
auch die zugehörige Konfigurationsoption (die ich global festgelegt habe) bedeutet, dass npm run start
im Stillen nichts unternommen wird und der Erfolg gemeldet wird. Erstaunen.
Sie können die Einstellungen auch in der npm-Konfigurationsdatei aktivieren.
npm config set ignore-scripts true
Hinweis: Dadurch werden Skripte für alle NPM-Pakete deaktiviert.
Um dies für Ihre eigene Bibliothek zu tun, empfehle ich etwas Einfaches wie:
#!/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
Dann installieren Sie Ihre npm mit:
your_pkg_skip_postinstall="yes" npm install
Ich wollte das Nachinstallationsskript für mein Projekt deaktivieren, wollte aber, dass alle Skripte der Abhängigkeiten meines Projekts ausgeführt werden, wenn ich dies tue npm install
. Das habe ich letztendlich getan.
./scripts/skip.js
if (process.env.SKIP_BUILD) {
process.exit(0);
} else {
process.exit(1);
}
"scripts": {
...
"postinstall": "node ./scripts/skip.js || npm run build",
...
}
Setzen Sie jetzt einfach die Umgebungsvariable SKIP_BUILD = 1, um zu verhindern, dass Ihr Paket erstellt wird und Ihre Abhängigkeiten einwandfrei erstellt werden
SKIP_BUILD=1 npm install