2017-10-09 82 views
0

我們有一個+的NodeJS Express應用程序,並想強制應用程序成功運行npm install只有npm -v等於process.env.npm_package_engines_npm,這是定義的package.json故宮的版本強制NPM版本中應用的NodeJS

這可能以某種方式嗎?

這個要求的原因是要100%確定所有的依賴關係在所有的開發實例中都以相同的方式安裝,因爲最近我們遇到了一些開發者版本爲5.2.0和其他5.3.0的問題,這個,結果不一樣。

回答

2

你可以用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'); 
    } 
}); 
1

您可以在指定engines property in your package.json

,將打印出警告,如果NPM版本不匹配您指定什麼(這至少讓用戶清楚,即使它不妨礙實際安裝,他們也需要更新npm)。

如果你通過了engine-strict CLI標誌那麼如果版本不匹配,NPM將錯誤:

$ npm install --engine-strict 
+0

我不知道這一個。作爲運行'npm install'的輔助要求也非常好 –

相關問題