blog.naokihaba.com

2026 年 3 月の OSS 活動

3 月に、Vite+ に初めて PR を出した。仕事で Vite+ を使いたかったので、vp create と vp migrate の問題から始めた。

voidzero-dev/vite-plus

fix: add troubleshooting tips for npm template not found error (#1055)

Vite+ への最初の PR である。vp create に存在しないテンプレート名を渡すと、pnpm の 404 エラーがそのまま表示されていた(#828)。原因は、パッケージが npm にあるかを確かめないまま、パッケージマネージャーを実行していたことだ。この PR で、先に npm レジストリを確認するようにした。テンプレートが見つからなければ、そのことを表示して止まる。

fix(create): show helpful error for unknown vite: templates (#1130)

vp create vite:test のように、vite: で始まる存在しないテンプレートを指定すると、ENOENT で異常終了していた(#1128)。vite:application などの既知のテンプレートは、途中で create-vite@latest に書き換えられる。そのため、最後まで vite: のまま残るものは、必ず未知のテンプレートである。これを検出して、vp create --list を案内するエラーを出して止まるようにした。

feat(migrate): migrate .nvmrc to .node-version during vp migrate (#1159)

Vite+ は Node.js のバージョンを .node-version から読む。一方、nvm を使うプロジェクトの多くは .nvmrc に書いている(#1158)。この PR で、vp migrate が .nvmrc を .node-version に移すようにした。先頭の v は削除する。

難しかったのは、.nvmrc に node と書かれている場合である。.node-version では node を表せないので、最初は警告を出して移行を飛ばしていた。レビューでは、lts/* に変換して移行を続ける案が出た。Node.js 27 からはすべてのメジャーバージョンが LTS になると Node.js が発表していたので、それを根拠に変換を採用し、変換したことをログに出すようにした。

動くコードの書き方は何通りもある。この PR で決める必要があったのは、元の設定の意味を保つことと、移行を止めないことのどちらを優先するかだった。それは、Vite+ がどう振る舞うべきかという問いだった。

feat(migrate): support volta node version migration to .node-version (#1201)

#1159 と同じことを Volta にも対応させた(#1183)。package.json に volta.node があれば、vp migrate が .node-version を作る。.nvmrc もあるときは .nvmrc を優先し、package.json の volta フィールドを手動で削除する手順を表示する。マージは 4 月 1 日である。

vuejs-jp/vuefes-2019

modernize continued (#236)

Vue Fes Japan 2019 のサイトを Nuxt 4 に移行した後、Netlify のデプロイプレビューが失敗していた(#235)。原因は、Vue 3 ではなく Vue 2 が解決されていたことだ。netlify.toml に [build] セクションがなく、Vue が直接の依存になっていなかった。また、Nitro の netlify-static プリセットでは Netlify 上の出力先が dist/2019 になるので、公開ディレクトリの設定も直した。あわせて、31 個の SFC のタグを script、template、style の順にそろえた。