blog.naokihaba.com

2026 年 9 月の OSS 活動

9 月の終わりに、Vite+ 1.0 がリリースされた(リリースノート)。9 月は、Vite+ の CLI の不具合の修正と、setup-vp の改善を主にした。

voidzero-dev/vite-plus

fix(cli): handle broken pipes in command output (#2785)

vp --version | head -n 1 のように出力を head に渡すと、vp が終了コード 134 で異常終了していた(#2661)。head が先に stdout を閉じると、println! が BrokenPipe で panic する。Vite+ は panic = "abort" でビルドしているので、プロセスがそのまま止まる。

Oxc の print_and_flush を参考に、出力用の関数を追加した。この関数は、BrokenPipe なら正常に終了し、Interrupted と WouldBlock なら再試行し、その他のエラーは呼び出し元に返す。

SIGPIPE のハンドラーをデフォルトに戻す方法も検討した。しかし、それはプロセス全体の振る舞いを変える。後処理の前にプロセスが止まる可能性があり、#[tokio::main] の中では設定が遅すぎてスレッドとの競合も避けられない。そのため、書き込む場所で BrokenPipe を処理する方法にした。

refactor: make global CLI stdout broken-pipe safe (#2793)

#2785 の続きである。vp_global_cli と vp_shared に残っていた print! と println! を、すべて同じ関数に置き換えた。クレート全体で clippy::print_stdout を許可していた設定も削除した。これで、AI エージェントが直接 println! を書いても CI が検出する。

ci: load generated environment before install doctor checks (#2790)

#2785 の CI で、Windows の vp env doctor が失敗した。#2758 で fallback 用の shim ディレクトリが追加され、vp env doctor はそのディレクトリも PATH にあることを確かめるようになった。しかし、インストールを確かめるワークフローは ~/.vite-plus/bin だけを GITHUB_PATH に追加していた。v1.0.0-rc.0 が公開されたときに、この差が表に出た。ワークフローで ~/.vite-plus/env を読み込んでから vp env doctor を実行するようにした。

docs: clarify Nushell XDG startup requirements and recovery (#2704)

Nushell の config.nu で XDG_DATA_HOME を変えると、Vite+ の設定が新しいセッションで読み込まれないことがわかり、Issue にした(#2491)。Nushell は config.nu を実行する前に autoload のディレクトリを決める。その後で XDG_DATA_HOME を変えると、インストーラーは新しいパスに設定を書くが、Nushell はそこを読まない。

Nushell のドキュメントは、XDG の変数を Nushell の起動前に設定することを求めている。インストーラーを変える案もいくつか調べたが、どれも問題の一部しか解決しないか、正しく設定しているユーザーに不要な警告を出す。そこで、インストーラーは変えずに、Getting Started にこの条件と回避方法を書いた。

docs: clarify migration dependency retention for pnpm (#2660)

Web サイトの移行用プロンプトを、vp help migrate の pnpm の説明に合わせた(#2656)。vp migrate が作る vite と vitest の依存は削除せずに残す。

docs: update homepage pack demo for the 1.0 release (#2844)

ホームページの vp pack のデモは、古い tsdown 0.14.1 の出力のままだった。Vite+ 1.0 の vp pack の実際の出力に合わせて更新した。

voidzero-dev/setup-vp

feat: add cache-save input for restore-only caching (#140)

cache-save という入力を追加した(#139)。デフォルトは true で、既存のワークフローの動作は変わらない。false にすると、キャッシュを復元するが、最後に保存しない。すべてのブランチでキャッシュを読み、信頼できるブランチだけがキャッシュを更新する、という設定のための入力である。Azure Pipelines と GitLab はキャッシュをそれぞれのプラットフォームの設定で扱うので、この入力は GitHub Actions だけに効く。

refactor: centralize Windows platform checks (#165)

process.platform === "win32" という判定が、複数のモジュールにあった(#157)。これを isWindows という共通の関数にまとめた。

docs: update checkout examples to v7 (#144)

README の例の actions/checkout を v7 に更新した。