Apakah ada opsi npm untuk menonaktifkan skrip postinstall saat menginstal paket? Atau untuk menulis ulang bidang apa saja dari package.json?
Apakah ada opsi npm untuk menonaktifkan skrip postinstall saat menginstal paket? Atau untuk menulis ulang bidang apa saja dari package.json?
Jawaban:
Tidak mungkin untuk menonaktifkan hanya postinstallskrip. Namun, Anda dapat menonaktifkan semua skrip menggunakan:
$ npm install --ignore-scripts
Seperti yang disebutkan delbertooo dalam komentar, ini juga menonaktifkan skrip dependensi.
--ignore-scriptsmenonaktifkan SEMUA skrip - bahkan dari dependensi Anda. Jika dependensi Anda perlu menjalankan skrip untuk mis. Menginstal beberapa binari, mereka mungkin rusak / tidak lengkap.
--ignore-scripts, atau opsi konfigurasi terkait (yang saya tetapkan secara global) juga akan berarti bahwa npm run startdiam-diam tidak akan melakukan apa-apa dan melaporkan keberhasilan. Menakjubkan.
Anda juga dapat mengaktifkan pengaturan di file konfigurasi npm.
npm config set ignore-scripts true
Catatan: Ini akan menonaktifkan skrip untuk semua paket NPM.
Untuk melakukan ini untuk perpustakaan Anda sendiri, saya sarankan sesuatu yang sederhana seperti:
#!/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
kemudian lakukan instalasi npm Anda dengan:
your_pkg_skip_postinstall="yes" npm install
Saya ingin menonaktifkan skrip postinstall untuk proyek saya tetapi ingin agar semua skrip dependensi proyek saya berjalan ketika saya melakukannya npm install. Inilah yang akhirnya saya lakukan.
./scripts/skip.js if (process.env.SKIP_BUILD) {
process.exit(0);
} else {
process.exit(1);
}
"scripts": {
...
"postinstall": "node ./scripts/skip.js || npm run build",
...
}
sekarang hanya mengatur variabel lingkungan SKIP_BUILD = 1 untuk mencegah paket Anda dari membangun dan dependensi Anda akan dibangun dengan baik
SKIP_BUILD=1 npm install