diff --git a/.changeset/dry-singers-drop.md b/.changeset/dry-singers-drop.md new file mode 100644 index 0000000000..fbd388db43 --- /dev/null +++ b/.changeset/dry-singers-drop.md @@ -0,0 +1,6 @@ +--- +"@pnpm/core": major +"pnpm": major +--- + +`dedupe-peer-dependents` is `true` by default. diff --git a/config/config/src/index.ts b/config/config/src/index.ts index e972a59948..8c0a3ab727 100644 --- a/config/config/src/index.ts +++ b/config/config/src/index.ts @@ -186,7 +186,7 @@ export async function getConfig ( bail: true, color: 'auto', 'deploy-all-files': false, - 'dedupe-peer-dependents': false, + 'dedupe-peer-dependents': true, 'enable-modules-dir': true, 'extend-node-path': true, 'fetch-retries': 2, diff --git a/pkg-manager/core/src/install/extendInstallOptions.ts b/pkg-manager/core/src/install/extendInstallOptions.ts index 9b40e12220..9ebae7b693 100644 --- a/pkg-manager/core/src/install/extendInstallOptions.ts +++ b/pkg-manager/core/src/install/extendInstallOptions.ts @@ -206,7 +206,7 @@ const defaults = async (opts: InstallOptions) => { modulesCacheMaxAge: 7 * 24 * 60, resolveSymlinksInInjectedDirs: false, dedupeDirectDeps: true, - dedupePeerDependents: false, + dedupePeerDependents: true, resolvePeersFromWorkspaceRoot: true, extendNodePath: true, } as StrictInstallOptions diff --git a/pkg-manager/core/test/install/multipleImporters.ts b/pkg-manager/core/test/install/multipleImporters.ts index 612a5c0f39..7c2ea43c62 100644 --- a/pkg-manager/core/test/install/multipleImporters.ts +++ b/pkg-manager/core/test/install/multipleImporters.ts @@ -1465,6 +1465,7 @@ test('resolve a subdependency from the workspace and use it as a peer', async () await mutateModules(importers, await testDefaults({ allProjects, autoInstallPeers: false, + dedupePeerDependents: false, linkWorkspacePackagesDepth: Infinity, strictPeerDependencies: false, workspacePackages, diff --git a/pkg-manager/core/test/install/peerDependencies.ts b/pkg-manager/core/test/install/peerDependencies.ts index 4b9686daf6..ef355742f0 100644 --- a/pkg-manager/core/test/install/peerDependencies.ts +++ b/pkg-manager/core/test/install/peerDependencies.ts @@ -59,6 +59,7 @@ test('nothing is needlessly removed from node_modules', async () => { prepareEmpty() const opts = await testDefaults({ autoInstallPeers: false, + dedupePeerDependents: false, modulesCacheMaxAge: 0, strictPeerDependencies: false, }) @@ -151,7 +152,13 @@ test('the right peer dependency is used in every workspace package', async () => rootDir: path.resolve('project-2'), }, ] - await mutateModules(importers, await testDefaults({ allProjects, autoInstallPeers: false, lockfileOnly: true, strictPeerDependencies: false })) + await mutateModules(importers, await testDefaults({ + allProjects, + autoInstallPeers: false, + dedupePeerDependents: false, + lockfileOnly: true, + strictPeerDependencies: false, + })) const lockfile = await readYamlFile(path.resolve(WANTED_LOCKFILE)) diff --git a/pnpm/test/recursive/misc.ts b/pnpm/test/recursive/misc.ts index 3af7650c97..32f30e2434 100644 --- a/pnpm/test/recursive/misc.ts +++ b/pnpm/test/recursive/misc.ts @@ -460,7 +460,8 @@ test('set recursive-install to false in .npmrc would disable recursive install i process.chdir('workspace') await fs.writeFile('pnpm-workspace.yaml', '', 'utf8') - await fs.writeFile('.npmrc', 'recursive-install = false', 'utf8') + await fs.writeFile('.npmrc', `recursive-install = false +dedupe-peer-dependents = false`, 'utf8') process.chdir('project-1') await execPnpm(['install'])