概要

パッケージマネージャーpnpmは9月7日、v11.26を正式リリースした。今回のアップデートは依存関係管理の柔軟性向上と、サプライチェーンセキュリティの強化という2つの軸を中心に据えている。目玉となるのは、pnpm-workspace.yamlのカタログ機能がworkspace:範囲を保持できるようになった点と、remove・updateコマンドに信頼性検証用のフラグ群が追加された点だ。

カタログのworkspace範囲指定

これまでカタログはワークスペース全体で共通のバージョン番号を一元管理する仕組みだったが、モノレポ内部のパッケージ間依存を指定する際にworkspace:プロトコルとの併用がしづらいという制約があった。v11.26ではカタログエントリにworkspace:^のようなworkspace:範囲を直接記述できるようになり、内部パッケージのバージョン指定もカタログに一元化できる。パッケージを公開する際には、この記法が通常のセマンティックバージョンとworkspace参照の両プロトコルに適切に置換される仕組みになっており、開発時とパブリッシュ時でそれぞれ正しい依存関係表記が使われる。

サプライチェーン検証の強化

セキュリティ面では、pnpm removeとpnpm updateに--trust-lockfile・--no-trust-lockfile・--trust-policy・--trust-policy-exclude・--trust-policy-ignore-afterという一連のフラグが追加された。特筆すべきは、パッケージの削除であってもロックファイル全体を書き換える処理が発生するため、removeコマンド実行時にもロックファイル全体を対象としたポリシーチェックが走るよう設計されている点だ。単純な依存関係の削除操作であっても、意図しない改変や不正なパッケージの混入を検知できるようにする狙いがある。

また、CI環境での利用を想定したpnpm change checkコマンドも新設された。これはワークスペースに既にコミットされているバージョンをversioning.epicsのバンド定義と突き合わせて検証するもので、プルリクエストごとに実行する検証ステップとして位置づけられている。従来はリリース時にバージョニングの不整合が発覚するケースがあったが、このコマンドによって変更が取り込まれる段階、つまりより早いタイミングで問題を検出できるようになる。

その他の変更点

このほど、pnpm deployが注入依存関係(injected dependencies)を必要としない形に改善されたほか、ビルド承認メカニズムの見直し、pnpm auditでの無視済みアドバイザリの除外、シンボリックリンクされたロックファイルへの対応の復活、Windows環境における引数転送の改善なども盛り込まれている。これらは単体では小粒な修正だが、モノレポ運用やCI/CDパイプラインにおける日常的な摩擦を減らすものであり、大規模なワークスペースを運用する開発チームにとっては地道ながら実用的なアップデートといえる。