GitHub Actionsのsetup-node v3.5.0で、 package.json の engines.node フィールドがサポートされた。
もともと setup-node には node-version-file というパラメータが存在する。ワークフローのYAMLファイルの中で直接Node.jsバージョンを書くのではなく、別のファイルから読み込むことができる。
setup-node/advanced-usage.md at main · actions/setup-node
The
node-version-fileinput 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, orpackage.json. If both thenode-versionand thenode-version-fileinputs are provided then thenode-versioninput 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.json の engines はnpmやyarnなどパッケージマネージャがもれなくサポートしているため、開発ツールを厳密に標準化していないチームでも共通のバージョン制約を適用しやすいはずだ。(npmの場合は engine-strict=true 設定が必要ではあるが)