🕌

Taskfile でバージョンチェックする

2025/01/12に公開

背景

普段は Docker で開発しているのですが、 WXT でブラウザ拡張機能を作るときは Docker を使うと色々面倒そうなので Docker 無しで開発することにしました。

バージョン管理ですが、 .nvmrcpackage.jsonengines とは別に、 test のときなどに使う(かもしれない)と思い、さくっと Taskfile でバージョン確認することにしました(コマンド結果と固定値の比較するだけ)。

(2025/01/13 追記)
nodevolta で管理が良さそう。

Taskfile

echoERROR, OK の色は GitHub Copilot が出しただけで、 Zenn だと色はつかないようです。

Taskfile.yml
version: "3"

tasks:
    doctor:
        desc: "Check workspace version"
        cmds:
            - task: check-version-equality
              vars:
                  NAME: "pnpm"
                  WORKSPACE_VERSION:
                      sh: pnpm -v
                  EXPECTED_VERSION: 10.0.0
            - task: check-version-equality
              vars:
                  NAME: "node"
                  WORKSPACE_VERSION:
                      sh: node -v
                  EXPECTED_VERSION: v23.5.0
    check-version-equality:
        desc: "Check version equality"
        vars:
            NAME: "{{.NAME}}"
            WORKSPACE_VERSION: "{{.WORKSPACE_VERSION}}"
            EXPECTED_VERSION: "{{.EXPECTED_VERSION}}"
        cmds:
            - echo "Checking workspace version of {{.NAME}}..."
            - |
                if [ "{{.WORKSPACE_VERSION}}" != "{{.EXPECTED_VERSION}}" ]; then
                echo -e "\e[31m[ERROR]\e[0m Workspace version of {{.NAME}} is {{.WORKSPACE_VERSION}}, not {{.EXPECTED_VERSION}}"
                exit 1
                fi
            - echo -e "\e[32m[OK]\e[0m Workspace version is {{.EXPECTED_VERSION}}"
        silent: true
$ task doctor
Checking workspace version of pnpm...
[OK] Workspace version is 10.0.0
Checking workspace version of node...
[OK] Workspace version is v23.5.0
$ task doctor
Checking workspace version of pnpm...
[ERROR] Workspace version of pnpm is 10.0.0, not 10.0.X
task: Failed to run task "doctor": exit status 1

Discussion