pnpm v10
pnpm v10 がリリースされた。
https://github.com/pnpm/pnpm/releases/tag/v10.0.0
Lifecycle scripts のデフォルト無効化
pnpm v10 では、lifecycle scripts の実行をデフォルトで無効化する変更が入った。
この変更は、セキュリティ強化を目的としている。Lifecycle scripts とは、packages.json の scripts に特定の命名パターンで記述されるprepareやpostinstallなどのスクリプトであり、特定の script やイベントにフックして自動的に実行されるもので、これを悪用するとユーザーの意図しないコードを実行することが出来る。
特定の依存関係の lifecycle scripts を実行するには、次のようにホワイトリスト形式で設定する必要がある。
{
"pnpm": {
"onlyBuiltDependencies": ["fsevents"]
}
}packageManager による自己バージョン管理
次のように package.json のpackageManegerフィールドに利用したい pnpm のバージョンを指定することで pnpm のバージョンを自動で管理する機能がデフォルトで有効化された。
{
"engines": {
"node": "^20.0.0"
},
"packageManager": "pnpm@9.7.0"
}この変更により pnpm では、この機能のフラグであったmanage-package-manager-versionsを有効化する必要も、packageManagerを元々利用していた Corepack を有効化することもなく、自動でバージョンを切り替えることが可能になった。
依存関係の検証または自動インストール
verify-deps-before-runフラグを有効化することで、依存関係の検証を行うことが出来る。
次のように.npmrcへ記述することで、有効化することが出来る。
verify-deps-before-run=installロックファイルとnode_modulesが一致しない場合に、自動的にpnpm installを実行したい場合はinstall、警告を出したい場合はwarn、エラーを出したい場合はerror、実行の確認を求める場合はpromptを指定する。