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 にあるかを確かめる前にパッケージマネージャーを実行していたので、先にレジストリを確認して、見つからなければそう表示するようにしました。

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

vp create vite:test のように存在しない vite: テンプレートを指定すると、ENOENT で落ちていました(#1128)。既知の vite: テンプレートは途中で create-vite@latest に書き換えられるので、最後まで vite: のまま残っていれば未知のテンプレートです。その場合は vp create --list を案内するようにしました。

vp create に渡した名前ごとの処理。vite:library は create-vite@latest に書き換えられてプロジェクトを作る。vite:test は vite: のまま残り、前は ENOENT で落ちたが、#1130 の後は –list を案内する。npm にない名前は、前は pnpm の 404 がそのまま出たが、#1055 の後は先に npm レジストリを確認して、見つからないと表示する

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

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

悩んだのは、.nvmrc に node と書かれている場合です。.node-version では node を表せないので、最初は警告を出して移行を飛ばしていたのですが、レビューで lts/* に変換する案をもらいました。Node.js 27 からはすべてのメジャーバージョンが LTS になると発表されていたので、変換するほうを選び、変換したことはログに出すようにしました。

この 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 を優先して、volta フィールドを手で消す手順を表示します。マージは 4 月 1 日でした。

vp migrate が .node-version を作るときの変換。.nvmrc の v24.14.0 は先頭の v を削除して 24.14.0 にする。.nvmrc の node は lts/* に変換してログに出す(#1159)。package.json の volta.node は同じバージョンを書く(#1201)。両方あるときは .nvmrc を優先し、volta フィールドを手で消す手順を表示する