2017-10-09 17 views
0

我々はNodejs + Expressアプリケーションを持っているし、成功しnpm -vprocess.env.npm_package_engines_npmに等しい場合にのみ、npm installを実行するためにアプリケーションを強制したいと思い、これは何とか可能ですか?強制NPMバージョン

この要件の理由は、すべての依存関係がすべての開発インスタンスで同じ方法でインストールされることを100%保証することです。最近、いくつかの開発者がバージョン5.2.0およびその他の5.3.0を持っていて、これは、結果は同じではありませんでした。

答えて

2

あなたは、NPMのバージョンが、で(これを指定したものと一致しない場合は警告を出力しますengines property in your package.json

を指定することができます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

を実行することができます実際のインストールを妨げない場合であってもnpmを更新する必要があることをユーザに明確にしている)。

バージョンが一致しない場合は、engine-strict CLIフラグを渡した場合、NPMはエラーになります:

$ npm install --engine-strict 
+0

私は、このいずれかを知りませんでした。また、 'npm install'を実行するための二次要件として非常に優れています。 –

関連する問題