編集

pnpm v9.7.0

pnpm v9.7.0 がリリースされた。

https://github.com/pnpm/pnpm/releases/tag/v9.7.0

#packageManager によるバージョンの切り替え

Corepack が利用する packageManager を参照して、自動的にバージョンを切り替える機能が追加された。 例えば、package.jsonに次のように指定すれば、自動的にpnpm@9.7.0が利用される。

json
{
  "packageManager": "pnpm@9.7.0"
}

この機能を有効化するには、manage-package-manager-versionstrueに設定する必要がある。 次のようにコマンドを実行する。

shell
pnpm config set manage-package-manager-versions true --location project

または.npmrcなどに次のように記述すればいい。

txt
manage-package-manager-versions=true

#パッケージの全てのバージョンをパッチを適用する

以前からpnpmでは、pnpm patchコマンドを利用して、パッケージのコードを直接書き換えることが出来る。 次のようにコマンドを入力する。

shell
pnpm patch <package-name>

出力に従ってパッチの記述やコマンドの入力を行うとpatches/<package-name>@<package-version>.patchというファイルが作成され、package.jsonには次のようにpatchedDependenciesフィールドが追加される。

json
{
  "pnpm": {
    "patchedDependencies": {
      "<package-name>@<package-version>": "patches/<package-name>@<package-version>.patch"
    }
  }
}

しかし、これは見て分かる通り、特定のバージョンに対してパッチを適用することしか出来ない。 つまり、パッケージのバージョンを上げるたびにパッチを適用する必要があった。

そこで、pnpm v9.7.0 ではpnpm patchコマンドでバージョンを指定しなかった場合、全てのバージョンに対してパッチを適用する機能が追加された。

編集