pnpm v11'de allowBuilds: package.json yerine pnpm-workspace.yaml

Problem

pnpm’yi güncelledikten sonra pnpm install sırasında şu hata:

ERR_PNPM_IGNORED_BUILDS  The following packages have build scripts that are ignored:
  esbuild
  sharp

package.json’da şu blok vardı ama artık çalışmıyor:

"pnpm": {
  "onlyBuiltDependencies": ["esbuild", "sharp"]
}

Neden

pnpm v11, package.json içindeki pnpm.* alanlarını artık okumaya güvenmiyor. Build izinleri artık ayrı bir yapılandırma dosyasında tanımlanıyor.

Çözüm

pnpm approve-builds esbuild sharp

Bu komut pnpm-workspace.yaml dosyasını oluşturur (veya günceller):

allowBuilds:
  esbuild: true
  sharp: true

Sonra package.json’daki "pnpm" bloğunu kaldır — artık gereksiz.

Güvenlik Notu

allowBuilds ile hangi paketin post-install scripti çalıştırabileceğini açıkça onaylıyorsun. Bu, bilinmeyen paketlerin rastgele kod çalıştırmasını önleyen kasıtlı bir tasarım değişikliği.

Her yeni paket için pnpm approve-builds <paket-adı> gerekiyor — ama bu bir özellik, hata değil.

EOF.