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.