pnpm の基本設定、モノレポ運用、依存 build script 制御、minimumReleaseAge などのサプライチェーン防御設定を設計・更新するときに使う。package.json、pnpm-workspace.yaml、.npmrc、lockfile を確認し、pnpm のバージョン制約を踏まえて安全な設定へ揃える。
pnpm の設定を追加・更新するときに使う。特に以下の依頼で使う。
minimumReleaseAge、allowBuilds、trustPolicy などを導入したいlatest 指定や緩い package manager 運用をやめたいpackage.jsonpackage.jsonpnpm-workspace.yaml.npmrcpnpm-lock.yamlpnpm install、pnpm run、CI、セットアップスクリプトへの影響を確認する。pnpm-workspace.yaml
ワークスペース全体に効かせたい pnpm 設定を置く。モノレポ方針と防御設定の第一候補。package.json
packageManager、ルート scripts、ワークスペース全体の依存管理方針を置く。package.json
packageManager の整合や、その package 固有の scripts を管理する。.npmrc
レジストリ、認証、CLI の補助設定向け。ワークスペースの運用方針そのものは pnpm-workspace.yaml を優先する。pnpm 10 系では、まず以下を検討する。
packageManager を固定するpackageManagerStrictVersion: trueverifyDepsBeforeRun: errorminimumReleaseAgetrustPolicy: no-downgradeblockExoticSubdeps: truestrictDepBuilds: trueallowBuildsバージョンの latest 指定は再現性と審査性が落ちるので、基本は固定版か少なくとも意図のある range に変える。
packageManager を揃える。pnpm install を分離したほうがよい場合がある。
verifyDepsBeforeRun を有効にすると、未 install 状態の pnpm run ... は失敗する。pnpm install 前提の手順は README や setup.sh に明示する。pnpm 10.26 以降では allowBuilds を優先する。古い onlyBuiltDependencies より意図が明確で、新規依存の混入にも強い。
方針:
true で許可するdangerouslyAllowAllBuilds は使わないよく許可候補になりやすいもの:
sharpbetter-sqlite3esbuildただし実際に必要かは lockfile と install ログで確認する。
minimumReleaseAge
公開直後の版を一定時間入れない。まずは 1440 分を基準に検討する。trustPolicy: no-downgrade
既存より trust evidence が弱い公開物への切り替えを拒否する。trustPolicyIgnoreAfter
古い公開物まで厳密に縛ると運用コストが高いときに使う。blockExoticSubdeps: true
推移依存経由の git / tarball 流入を抑える。追加する設定が、今の pnpm で解釈できるかを先に確認する。特に以下は version gate がある。
minimumReleaseAge: pnpm >= 10.16trustPolicy: pnpm >= 10.21trustPolicyIgnoreAfter: pnpm >= 10.27blockExoticSubdeps: pnpm >= 10.26allowBuilds: pnpm >= 10.26足りない場合は、先に packageManager を更新する。
latest 指定を残していないかpackageManager が全 package で揃っているかpnpm run setup や CI が verifyDepsBeforeRun で壊れないか変更提案や実装時は、以下を短く説明する。
latest を使わないpackage.json の latest を lockfile か明示版へ固定するonlyBuiltDependencies から allowBuilds へ移すpnpm-workspace.yaml に allowBuilds を追加するtrue にするverifyDepsBeforeRun で setup が壊れるpnpm install を setup.sh の外に出すpnpm install 前提を明記するminimumReleaseAgeblockExoticSubdepspackageManagerStrictVersion必要なときだけ trustPolicy を足す。