

devcontainerのnode featureがv2でnpmVersion対応してた
この記事は、構成と文章の整理に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"を指定してビルドし直したら、実際にコンテナ内で
npm -vが返ってきた。node:1のときは同じ設定を書いても無視されてデフォルトのnpmバージョンのままだった。
featureのメジャーバージョン表記(:1 / :2)はNode.jsのバージョンとは別物で、featureパッケージ自体のバージョニングなので、そこは混同しないほうがいい。