我們有一個+的NodeJS Express應用程序,並想強制應用程序成功運行npm install
只有npm -v
等於process.env.npm_package_engines_npm
,這是定義的package.json故宮的版本強制NPM版本中應用的NodeJS
這可能以某種方式嗎?
這個要求的原因是要100%確定所有的依賴關係在所有的開發實例中都以相同的方式安裝,因爲最近我們遇到了一些開發者版本爲5.2.0和其他5.3.0的問題,這個,結果不一樣。
我們有一個+的NodeJS Express應用程序,並想強制應用程序成功運行npm install
只有npm -v
等於process.env.npm_package_engines_npm
,這是定義的package.json故宮的版本強制NPM版本中應用的NodeJS
這可能以某種方式嗎?
這個要求的原因是要100%確定所有的依賴關係在所有的開發實例中都以相同的方式安裝,因爲最近我們遇到了一些開發者版本爲5.2.0和其他5.3.0的問題,這個,結果不一樣。
你可以用JS腳本文件並運行node preinstall.js
// preinstall.js
const exec = require('child_process').exec;
exec('npm -v', function (error, stdout, stderr) {
if (error) {
console.log('error: ' + error + stderr);
return;
}
const nodeVersion = stdout;
if (process.env.npm_package_engines_npm === nodeVersion) {
exec('npm install');
}
});
您可以在指定engines
property in your package.json
,將打印出警告,如果NPM版本不匹配您指定什麼(這至少讓用戶清楚,即使它不妨礙實際安裝,他們也需要更新npm)。
如果你通過了engine-strict CLI標誌那麼如果版本不匹配,NPM將錯誤:
$ npm install --engine-strict
我不知道這一個。作爲運行'npm install'的輔助要求也非常好 –