Node.jsを使用したアプリケーションを開発していると、開発環境によってはNode.jsやnpmのバージョンが明確に固定されている必要があるケースがあります。BundlerなどではRubyのバージョンをGemfileで固定できますが、Node.jsではそれに相当する engineStrict
が npm v3 で削除されてしまったため、プロジェクトに応じてなんらかの工夫が必要になります。
check-node-versionを使う
check-node-versionというnpmは、実行時の環境のNode.jsやnpmのバージョンをチェックできます。
以下を実行すると >=6.0.0 <7.0.0 のバージョンでない場合にエラーを出します。
$ check-node-version --node 6
node: 8.2.1
Error: Wanted node version 6 (>=6.0.0 <7.0.0)
To install node, run `nvm install 6` or see https://nodejs.org/
以下はNode.jsバージョンの範囲指定の例です。 8.9.0
以降であることを期待しています。
$ check-node-version --node '>= 8.9.0'
同様にしてnpmのバージョンや、yarnもチェックできます
# Node.jsとnpmのバージョンチェック
$ check-node-version --node 4 --npm 2.14
# yarnのバージョンチェック
$ check-node-version --yarn 0.17.1
script実行との併用
実用的な例として、以下のようにコマンドの実行前に check-node-version
によるバージョンチェックを行って、Node.jsのバージョン差異によって問題が起きるの事前に防ぐことができます。
{
"name": "my-package",
"devDependencies": {
"check-node-version": "^1.0.0"
},
"scripts": {
"test": "check-node-version --node '>= 4.2.3' && node my-tests.js"
}
}