2026年9月
     123456
    78910111213
    14151617181920
    21222324252627
    282930  

    パッケージマネージャーpnpmのバージョン12.4が2026年9月8日にリリースされた。JavaScriptのnpmパッケージに加え、RustとPythonの依存関係を同じワークスペースでインストールする実験的機能を追加した。ビルドやテストなどをまとめて実行するpnpm pipelineも追加されている。

    1回のインストールでJavaScript⁠・Rust⁠・Pythonの依存関係を取得

    インストールにはpnpm installを使う。pnpmの公式Xアカウントでは、複数言語を使うリポジトリで、npmパッケージ、Rustのパッケージであるクレート、Pythonパッケージを並行してダウンロードできると紹介している。

    experimental: pnpm v12.4 can install Rust and Python dependencies too. So in a multi-language repository you get js packages, crates, and pypi packages downloaded concurrently.https://t.co/L3laZrA832

    — pnpm (@pnpmjs) September 11, 2026

    RustとPythonへの対応はデフォルトで無効になっており、利用する言語の設定をpnpm-workspace.yamlで有効にする。両方を利用する場合の設定は次のとおり。

    cargo:
    enabled: true
    python:
    enabled: true

    依存関係を追加する際は、クレート名にcrate:、Pythonパッケージ名にpypi:を付ける。たとえば、Rustのserdeはpnpm add crate:serde、Pythonのhttpxはpnpm add pypi:httpxで追加できる。

    インストールをまとめても、依存関係の記録には各言語のファイルを使う。Rustの依存関係はCargo.tomlとCargo.lockで管理し、pnpm-lock.yamlとは分けて保持する。pnpmはソースを取得し、RustのビルドツールCargoから参照できるように.cargo/config.tomlを設定する。その後のコンパイルはcargo buildで行う。

    Pythonの依存関係については、pnpmがpyproject.tomlを読み込み、解決した結果をpylock.tomlに記録する。プロジェクトごとに仮想環境.venvを用意し、pnpm runやpnpm execからその環境のコマンドを呼び出せる。pnpm自身が作成したものではない既存の.venvは変更しない。

    パッケージの保存には共通のストアを使い、一度取得したファイルを別のプロジェクトでも再利用する。RustとPythonでも、ロックファイルを変更せずにインストールする–frozen-lockfileや、ネットワークを使わない–offlineに対応する。

    ビルドやテストをまとめて実行するpnpm pipeline

    新しい実験的コマンドpnpm pipelineは、ロックファイルを変更せずに依存関係をインストールした後、ワークスペース内のタスクを実行する。対象は、Gitの基準リビジョンからの変更で影響を受けたプロジェクトと、それらに依存するプロジェクトとなる。

    実行するタスクの組み合わせは、pnpm-workspace.yamlのpipelinesに名前を付けて定義する。たとえばdefault: [build, test]と設定すると、pnpm pipelineでbuildとtestを実行できる。別の名前で定義した組み合わせは、pnpm pipeline <名前>で指定する。タスクの実行順序は、tasksのdependsOnで指定した依存関係で決まる。

    各タスクに出力ファイルを示すoutputsを宣言すると、結果をキャッシュして再利用できる。ファイルを生成しないテストなども、outputs: []を指定すればキャッシュの対象になる。キャッシュが使える場合はタスクを再実行せず、出力ファイルを復元し、保存したログを再表示する。

    また、タスクが失敗しても処理を続け、1回の実行で複数の失敗を報告する。pnpm pipeline –dry-runでは、インストールやタスク実行を行わずにタスク間の依存関係を確認できる。

    対応プラットフォームを追加⁠、更新時のキャッシュ処理も変更

    pnpm 12.4では、Androidのarm64・x64、FreeBSDのx64、Linuxのppc64le・s390x・RISC-V向けにバイナリを追加した。追加されたLinux向けバイナリはいずれもglibc環境が対象となる(対応プラットフォームの一覧⁠)⁠。

    レジストリから取得するパッケージのメタデータは、URLのパスやスキームが異なるレジストリごとに分けて保存するようになった。これにより、別のレジストリのバージョン情報やダウンロード先URLが誤って使われるのを防ぐ。更新後の初回インストールではメタデータを再取得するが、パッケージストアは維持される。

    キャッシュ関連コマンドでは、pnpm cache viewがレジストリの完全なURLを表示するようになった。pnpm cache list-registriesやpnpm cache listの出力からディレクトリ名を解析するスクリプトは、変更に合わせた更新が必要になる。

    後続の12.4.1では、AndroidでシステムのCA証明書が見つからずレジストリへの通信が失敗する不具合などを修正した。nodeLinker: hoistedを使う環境で、再インストール時に既存のパッケージを取り込み直す問題にも対処している。

    Share.

    Comments are closed.