2022-10-03 (Updated at: 2022-10-03)

GitHub Actions: setup-nodeのNode.jsバージョンをpackage.jsonで指定する

#GitHub Actions #Node.js

GitHub Actions の setup-node v3.5.0 で、 package.jsonengines.node フィールドがサポートされた。

https://github.com/actions/setup-node/releases/tag/v3.5.0

もともと setup-node には node-version-file というパラメータが存在する。ワークフローの YAML ファイルの中で直接 Node.js バージョンを書くのではなく、別のファイルから読み込むことができる。

setup-node/advanced-usage.md at main · actions/setup-node

The node-version-file input accepts a path to a file containing the version of Node.js to be used by a project, for example .nvmrc.node-version.tool-versions, or package.json. If both the node-version and the node-version-file inputs are provided then the node-version input is used. See supported version syntax.

v3.5.0 ではここに新たに package.json が追加され、 engines.node プロパティを参照できるようになった。

steps:
  - uses: actions/checkout@v3
  - uses: actions/setup-node@v3
    with:
      node-version-file: 'package.json'
      cache: yarn

いままでサポートされていた Node.js バージョン管理ツール用の設定ファイルと違い、 package.jsonengines は npm や yarn などパッケージマネージャがもれなくサポートしているため、開発ツールを厳密に標準化していないチームでも共通のバージョン制約を適用しやすいはずだ。(npm の場合は engine-strict=true 設定が必要ではあるが)

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