diff --git a/packages/nx/src/utils/create-package-json.ts b/packages/nx/src/utils/create-package-json.ts index 28466c31b00ce..be34fc5482256 100644 --- a/packages/nx/src/utils/create-package-json.ts +++ b/packages/nx/src/utils/create-package-json.ts @@ -56,28 +56,18 @@ export function createPackageJson( }); Object.entries(npmDeps.peerDependencies).forEach(([packageName, version]) => { if (!packageJson.peerDependencies?.[packageName]) { - if (rootPackageJson.dependencies?.[packageName]) { - packageJson.dependencies ??= {}; - packageJson.dependencies[packageName] = version; - return; - } - - const isOptionalPeer = - npmDeps.peerDependenciesMeta[packageName]?.optional; - if (!isOptionalPeer) { - packageJson.peerDependencies ??= {}; - packageJson.peerDependencies[packageName] = version; - } else if (!options.isProduction) { - // add peer optional dependencies if not in production - packageJson.peerDependencies ??= {}; - packageJson.peerDependencies[packageName] = version; - packageJson.peerDependenciesMeta ??= {}; - packageJson.peerDependenciesMeta[packageName] = { - optional: true, - }; - } + packageJson.dependencies ??= {}; + packageJson.dependencies[packageName] = version; } }); + if (options.isProduction && packageJson.peerDependencies) { + const mandatoryPeedDeps = filterOptionalPeerDependencies(packageJson); + if (mandatoryPeedDeps) { + packageJson.peerDependencies = mandatoryPeedDeps; + } else { + delete packageJson.peerDependencies; + } + } packageJson.devDependencies &&= sortObjectByKeys(packageJson.devDependencies); packageJson.dependencies &&= sortObjectByKeys(packageJson.dependencies); @@ -97,8 +87,7 @@ function findAllNpmDeps( list: { dependencies: Record; peerDependencies: Record; - peerDependenciesMeta: Record; - } = { dependencies: {}, peerDependencies: {}, peerDependenciesMeta: {} }, + } = { dependencies: {}, peerDependencies: {} }, seen = new Set() ) { const node = graph.externalNodes[projectName]; @@ -136,7 +125,6 @@ function recursivelyCollectPeerDependencies( list: { dependencies: Record; peerDependencies: Record; - peerDependenciesMeta: Record; }, seen = new Set() ) { @@ -157,18 +145,13 @@ function recursivelyCollectPeerDependencies( .map((dependency) => graph.externalNodes[dependency]) .filter(Boolean) .forEach((node) => { - if (!seen.has(node.name)) { + if ( + !packageJson.peerDependenciesMeta?.[node.data.packageName] + ?.optional && + !seen.has(node.name) + ) { seen.add(node.name); list.peerDependencies[node.data.packageName] = node.data.version; - if ( - packageJson.peerDependenciesMeta && - packageJson.peerDependenciesMeta[node.data.packageName] && - packageJson.peerDependenciesMeta[node.data.packageName].optional - ) { - list.peerDependenciesMeta[node.data.packageName] = { - optional: true, - }; - } recursivelyCollectPeerDependencies(node.name, graph, list, seen); } });