投稿日:2022年11月10日
Node.jsの一つのプロジェクトを複数人で開発する場合、それぞれのメンバーが同じ開発環境を構築する必要があります。この考え自体は非常に一般的だとは思いますが、ふとしたヒューマンエラーでズレた環境で開発を進めてしまうことがあります。
例:一つのPC内で複数のNode.jsバージョンのプロジェクトを扱っていて、うっかり切り替えを忘れてしまった。
そのような場合にすぐ気がつければ良いのですが、自分では気づかずに後々問題が発覚してしまう事もよくあります。そうならないために、間違ったバージョンでは即座にエラーになってしまう設定があると安心ですね。
この記事では、Node.jsプロジェクトで言語やパッケージマネージャのバージョンの強制設定の方法について解説します。
プロジェクトのpackage.jsonのengineプロパティには、そのプロジェクトで使用する必要のあるNode.jsのバージョンやnpmのバージョンなどを指定することができます。(バージョンの記述方法については公式ドキュメント参照)
※デフォルトではWarningを出すだけな点に注意してください(Errorを投げさせる場合にはnpmのconfigでErrorを投げさせる設定。
例えば、Node.jsのバージョンを16.17.0
、npmのバージョンを8.0.x
系にしたい場合には下のようになります。
{
"engines": {
"node": "~16.17.0",
"npm": "^8.0.x"
}
}
"engines": {
"yarn": "Don't use 'yarn'!!! Please use 'npm'!!!"
},
エラーを投げさせるにはnpmのconfigにengine-strict=true
を設定する必要があります。設定する方法はいくつかあるのですが、チーム内で同様の設定を共有するためには、.npmrcを使用すると良いでしょう。
以下のファイルをpackage.jsonと同じディレクトリに作成しましょう。
engine-strict = true