pnpmがPythonとRust依存も管理
pnpm 12.4はnpmパッケージ、Pythonパッケージ、Rust crateを同じワークスペースで導入できますが、各エコシステム固有のマニフェストと規則は維持します。
60秒でわかる
pnpm 12.4はJavaScript、Python、Rustの依存導入を同じワークスペースから調整し、各環境固有のマニフェストとロックファイルは維持します。
要点
- Pythonはpyproject.toml、標準pylock.toml、管理された仮想環境を使います。
- RustはCargo.tomlとCargo.lockを維持し、解決したcrateをvendorします。
- ダウンロード、認証、成果物処理、コンテンツアドレス型保存を共通化します。
- 新しいpnpm pipelineは影響範囲選択、タスクグラフ、出力キャッシュを提供します。
- 公式は初期段階と説明し、設定とレイアウトが変わる可能性を示しています。
結論. 混合言語monorepoには有望ですが、本番ツールチェーンの即時置換ではなく限定的な試行から始めるべきです。
pnpm 12.4は同じワークスペースでnpm、Python、Rustの依存を調整できます。 `pyproject.toml`、`Cargo.toml`、各ロックファイルを置き換えず、その外側に共通の導入・保存層を加えます。
変更点一つのコマンドで三つの依存環境を調整
`pnpm-workspace.yaml`で`python.enabled`または`cargo.enabled`を有効にすると、`pypi:`や`crate:`セレクターで依存を追加し、一度の`pnpm install`で導入できます。npm依存は従来のJavaScript経路を使います。
| JavaScript | npmメタデータとpnpmロックファイルを従来どおり使います。 |
|---|---|
| Python | pyproject.tomlと標準pylock.tomlに記録し、プロジェクトごとに.venvを管理します。 |
| Rust | Cargo.tomlとCargo.lockを維持し、解決したcrateをCargo方式でvendorします。 |
共通層はネットワーク、registry認証、成果物の検証、コンテンツアドレス型ストレージです。リリースノートでは三つの経路でfrozenとoffline導入を利用できるとしています。
意味対象はpolyglot monorepo
一つの製品リポジトリにTypeScriptのフロントエンド、Pythonサービス、Rust拡張が同居することがあります。通常はCIで複数のインストーラーとキャッシュを接続します。pnpm 12.4は言語固有の解決規則を残しながら、その配管を調整します。
共通化するのは導入の制御面であり、パッケージ形式ではありません。
もう一つの追加pnpm pipelineがタスクグラフを導入
新しい`pnpm pipeline`はfrozen依存を導入し、宣言されたワークスペースタスクを依存順に実行します。影響を受けるプロジェクトの選択、出力キャッシュ、ログ再生に対応し、一つの失敗後も他のエラーを収集できます。
- `inputs`、`outputs`、`env`をキャッシュキーに反映できます。
- `pnpm pipeline --dry-run`はフックを実行せずグラフを表示します。
- Cargoタスクはworktree間でtargetディレクトリを再利用できます。
検証成果物は公開済み、成熟度は未確認
iyuはnpm registryのメタデータを確認し、個別配布のLinux x64実行ファイルも取得しました。実行結果は12.4.0です。公開の事実は確認できますが、本番規模での信頼性を示すものではありません。
導入前境界を先に試す
- 重要度の低いワークスペースから始め、生成ファイルを確認します。
- frozenとoffline導入を既存CIと比較します。
- registry認証とセキュリティ方針の流れを確認します。
- 調査用にPythonとCargoのネイティブコマンドを残します。
判断基準は全言語ツールを置き換えられるかではなく、初期機能を採用するコスト以上にCIとワークスペースの調整を減らせるかです。