1 回答

TA貢獻1951條經驗 獲得超3個贊
阻止安裝節點包的最佳實踐是從預安裝腳本返回非零退出代碼。
您仍然會收到一堆npm ERR消息,但它不會像process.kill您共享的選項那樣終止 npm 進程,并且會獲得正確的 npm 日志。
即,在 中preinstall.js,你可以有這樣的東西:
if (someCondition) {
console.error('someCondition happened, aborting installation');
process.exit(1);
}
當someCondition遇到時,你會看到這樣的東西:
$ npm install ~/src/untracked/mypkg/mypkg-1.0.0.tgz
> [email protected] preinstall C:\Users\allon\src\git\samplenode\node_modules\mypkg
> node preinstall
someCondition happened, aborting installation
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] preinstall: `node preinstall`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] preinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/users/mureinik/.npm-cache/_logs/2020-11-29T09_58_46_179Z-debug.log
編輯:
從答案正文中的評論中捕獲討論,因此更容易找到其他人是否遇到相同的問題。這里的目標是使特定包的安裝失敗,而不使整個npm install過程失敗。此行為無法通過預安裝腳本控制(該腳本只能控制其所屬的包是否成功安裝),但如果依賴項optionalDependencies在package.json.
添加回答
舉報