@@ -754,38 +754,31 @@ async function applyPackageOverrides({
754754 ...devOverrides ,
755755 } ;
756756
757- // Check for overrides location: pnpm-workspace.yaml or package.json
757+ // pnpm 11 ignores `pkg.pnpm.overrides` (pnpm/pnpm#10086); on pnpm 10 it
758+ // shadows the yaml. Migrate any pre-existing pkg overrides into the yaml
759+ // so the result is identical across pnpm 10 and 11.
758760 const workspace = await readPnpmWorkspaceYaml ( dir ) ;
759- const hasWorkspaceOverrides =
760- workspace . exists && workspace . content . overrides ;
761- const hasPackageOverrides = pkg . pnpm ?. overrides ;
761+ const inheritedOverrides = pkg . pnpm ?. overrides ;
762762
763- // Conflict check: overrides cannot exist in both locations
764- if ( hasWorkspaceOverrides && hasPackageOverrides ) {
763+ if ( workspace . content ?. overrides && inheritedOverrides ) {
765764 throw new Error (
766765 'Conflicting overrides detected: both pnpm-workspace.yaml and package.json contain pnpm overrides. ' +
767766 'Please use only one location for overrides configuration.' ,
768767 ) ;
769768 }
770769
771- // Apply overrides to the appropriate location
772- if ( hasWorkspaceOverrides ) {
773- // Write to pnpm-workspace.yaml
774- workspace . content . overrides = {
775- ...workspace . content . overrides ,
776- ...normalizedOverrides ,
777- } ;
778- await writePnpmWorkspaceYaml ( workspace . filePath , workspace . content ) ;
779- } else {
780- // Write to package.json (default)
781- if ( ! pkg . pnpm ) {
782- pkg . pnpm = { } ;
783- }
784- pkg . pnpm . overrides = {
785- ...pkg . pnpm . overrides ,
786- ...normalizedOverrides ,
787- } ;
770+ if ( inheritedOverrides ) {
771+ delete pkg . pnpm . overrides ;
772+ if ( Object . keys ( pkg . pnpm ) . length === 0 ) delete pkg . pnpm ;
788773 }
774+
775+ const wsContent = workspace . content ?? { } ;
776+ wsContent . overrides = {
777+ ...wsContent . overrides ,
778+ ...inheritedOverrides ,
779+ ...normalizedOverrides ,
780+ } ;
781+ await writePnpmWorkspaceYaml ( workspace . filePath , wsContent ) ;
789782 } else if ( pm === 'yarn' ) {
790783 if ( ! pkg . devDependencies ) {
791784 pkg . devDependencies = { } ;
0 commit comments