devcontainerのnode featureがv2でnpmVersion対応してた

  • Dev Containers
  • Node.js
  • npm
  • CI/CD

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

devcontainerのnode featureでnpmVersionが指定できるようになってた。

"ghcr.io/devcontainers/features/node:2": {
"version": "24",
"npmVersion": "12"
}

これでnpm -vが12.0.1を返す。前まで使ってたnode:1だとこの書き方をしても無視されてた。

"ghcr.io/devcontainers/features/node:1": {
"version": "24"
}

こっちだとnpmVersionのキー自体対応してなかった。

何があったか

もともとnode featureはnpmのバージョンを固定する手段がなくて、コンテナのnodeバージョンにバンドルされてるnpmがそのまま入る仕様だった。これに対してdevcontainers/featuresリポジトリにIssue #1607が立って(2026年3月21日)、npmVersionオプションを追加してほしいという要望が上がってた。

対応するPR #1616が同年4月28日にマージされて、node featureが1.7.1から2.1.0にバージョンアップしてる。つまりメジャーバージョンが1から2に上がったタイミングでnpmVersionが入った、ということらしい。

確認したこと

手元のdevcontainer.jsonをnode:1からnode:2に上げてnpmVersion: "12"を指定してビルドし直したら、実際にコンテナ内で

12.0.1
npm -v

が返ってきた。node:1のときは同じ設定を書いても無視されてデフォルトのnpmバージョンのままだった。

featureのメジャーバージョン表記(:1 / :2)はNode.jsのバージョンとは別物で、featureパッケージ自体のバージョニングなので、そこは混同しないほうがいい。