😎

GitHub Actionsで、.node-versionで指定されているバージョンのNode.jsをセットアップする

2022/06/24に公開

Node.jsを使うプロジェクトで、リポジトリに.node-versionというファイルを置き、使用するNode.jsのバージョンをそのファイルで指定することはよくあります。

例えば.node-versionに

16.15.1

と記述しておくと、.node-versionをサポートするツール(nodenvasdfなど)がインストールされている環境なら、そのファイルのあるディレクトに入ると自動的にNode.jsのバージョンが16.15.1に切り替わります。

さて、GitHub Actionsのワークフローで、setup-nodeを使ってNode.jsをセットアップすることはよくあります。リポジトリに.node-versionがある場合、GitHub Actionsのワークフローでも.node-versionで指定されているバージョンのNode.jsをセットアップできないでしょうか?

そう思って調査したところ、setup-nodeにnode-version-fileというパラメータがあり、それにリポジトリのルートからの.node-versionのパスを渡したら実現できました。次がその例です。

name: Run test on pull request

on:
  pull_request:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version-file: ./.node-version

      - name: Check Node.js version
        run: node --version

      - name: Install dependencies
        run: yarn install --immutable

      - name: Run test
        run: yarn test

これはプルリクエストが発生したときに、yarnでテストを実行するワークフローです。stepsの「Setup Node.js」で、リポジトリのルートにある.node-versionで指定されているバージョンのNode.jsがセットアップされます。

Discussion