※このブログではサーバー運用、技術の検証等の費用のため広告をいれています。
記事が見づらいなどの問題がありましたらContactからお知らせください。


Node.jsとパッケージマネージャを指定したバージョンで強制する

web開発 javascript npm yarn Node.js .npmrc engines

投稿日:2022年11月10日

このエントリーをはてなブックマークに追加

はじめに

プロジェクトのメンバー間の環境

Node.jsの一つのプロジェクトを複数人で開発する場合、それぞれのメンバーが同じ開発環境を構築する必要があります。この考え自体は非常に一般的だとは思いますが、ふとしたヒューマンエラーでズレた環境で開発を進めてしまうことがあります。

例:一つのPC内で複数のNode.jsバージョンのプロジェクトを扱っていて、うっかり切り替えを忘れてしまった。

そのような場合にすぐ気がつければ良いのですが、自分では気づかずに後々問題が発覚してしまう事もよくあります。そうならないために、間違ったバージョンでは即座にエラーになってしまう設定があると安心ですね。

この記事では、Node.jsプロジェクトで言語やパッケージマネージャのバージョンの強制設定の方法について解説します。

参考


実践

package.jsonのengineプロパティ

プロジェクトのpackage.jsonengineプロパティには、そのプロジェクトで使用する必要のあるNode.jsのバージョンやnpmのバージョンなどを指定することができます。(バージョンの記述方法については公式ドキュメント参照

※デフォルトではWarningを出すだけな点に注意してください(Errorを投げさせる場合にはnpmのconfigでErrorを投げさせる設定

バージョン指定

例えば、Node.jsのバージョンを16.17.0、npmのバージョンを8.0.x系にしたい場合には下のようになります。

package.json
{
  "engines": {
    "node": "~16.17.0",
    "npm": "^8.0.x"
  }
}

パッケージマネージャを指定するには

Node.jsのパッケージマネージャはnpmだけではなくyarnなども使用することができます。しかし、それぞれが勝手に好きなパッケージマネージャを使ってしまうと、lockfileが正しく更新されず、これもまたバグになってしまいます。

これを防ぐ方法として、使わせたくないパッケージマネージャのバージョン指定に、バージョンの形式として正しくないテキストを入力することで、そのパッケージマネージャでは必ずエラーになるようにできます。

下はyarnの使用を禁止するengines設定です。
※メッセージは読み手がわかりやすいものを設定してください。

"engines": {
    "yarn": "Don't use 'yarn'!!! Please use 'npm'!!!"
  },

npmのconfigでErrorを投げさせる設定

エラーを投げさせるにはnpmのconfigにengine-strict=true を設定する必要があります。設定する方法はいくつかあるのですが、チーム内で同様の設定を共有するためには、.npmrcを使用すると良いでしょう。

以下のファイルをpackage.jsonと同じディレクトリに作成しましょう。

.npmrc
engine-strict = true
このエントリーをはてなブックマークに追加


関連記事

記事へのコメント