Skip to content

Commit 4949c44

Browse files
authored
fix(ci): always write pnpm overrides to pnpm-workspace.yaml (#34)
1 parent f767cdd commit 4949c44

1 file changed

Lines changed: 16 additions & 23 deletions

File tree

utils.ts

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)