Odpowiedzi:
Nie można wyłączyć tylko postinstall
skryptów. Możesz jednak wyłączyć wszystkie skrypty za pomocą:
$ npm install --ignore-scripts
Jak wspomniał delbertooo w komentarzach, powoduje to również wyłączenie skryptów zależności.
--ignore-scripts
wyłącza WSZYSTKIE skrypty - nawet z twoich zależności. Jeśli twoje zależności muszą uruchamiać skrypty, aby np. Zainstalować jakieś pliki binarne, mogą się zepsuć / być niekompletne.
--ignore-scripts
lub powiązana opcja konfiguracji (którą ustawiłem globalnie) będzie również oznaczać, że npm run start
po cichu nic nie zrobi i zgłosi sukces. Zadziwiać.
Możesz również włączyć ustawienia w pliku konfiguracyjnym npm.
npm config set ignore-scripts true
Uwaga: spowoduje to wyłączenie skryptów dla wszystkich pakietów NPM.
Aby zrobić to dla własnej biblioteki, polecam coś prostego, na przykład:
#!/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
następnie wykonaj instalację npm za pomocą:
your_pkg_skip_postinstall="yes" npm install
Chciałem wyłączyć skrypt poinstalacyjny dla mojego projektu, ale chciałem, aby wszystkie skrypty zależności mojego projektu działały, gdy to zrobię npm install
. Oto, co ostatecznie zrobiłem.
./scripts/skip.js
if (process.env.SKIP_BUILD) {
process.exit(0);
} else {
process.exit(1);
}
"scripts": {
...
"postinstall": "node ./scripts/skip.js || npm run build",
...
}
teraz po prostu ustaw zmienną środowiskową SKIP_BUILD = 1, aby zapobiec budowaniu pakietu, a twoje zależności będą się budować dobrze
SKIP_BUILD=1 npm install