Skip to content

Commit

Permalink
fix(core): consult root package.json when resolving peer deps on pack…
Browse files Browse the repository at this point in the history
…age generation (#13949)
  • Loading branch information
meeroslav committed Dec 21, 2022
1 parent d3e2d61 commit f3465a9
Showing 1 changed file with 33 additions and 16 deletions.
49 changes: 33 additions & 16 deletions packages/nx/src/utils/create-package-json.ts
Expand Up @@ -56,18 +56,28 @@ export function createPackageJson(
});
Object.entries(npmDeps.peerDependencies).forEach(([packageName, version]) => {
if (!packageJson.peerDependencies?.[packageName]) {
packageJson.dependencies ??= {};
packageJson.dependencies[packageName] = version;
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,
};
}
}
});
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);
Expand All @@ -87,7 +97,8 @@ function findAllNpmDeps(
list: {
dependencies: Record<string, string>;
peerDependencies: Record<string, string>;
} = { dependencies: {}, peerDependencies: {} },
peerDependenciesMeta: Record<string, { optional: boolean }>;
} = { dependencies: {}, peerDependencies: {}, peerDependenciesMeta: {} },
seen = new Set<string>()
) {
const node = graph.externalNodes[projectName];
Expand Down Expand Up @@ -125,6 +136,7 @@ function recursivelyCollectPeerDependencies(
list: {
dependencies: Record<string, string>;
peerDependencies: Record<string, string>;
peerDependenciesMeta: Record<string, { optional: boolean }>;
},
seen = new Set<string>()
) {
Expand All @@ -145,13 +157,18 @@ function recursivelyCollectPeerDependencies(
.map((dependency) => graph.externalNodes[dependency])
.filter(Boolean)
.forEach((node) => {
if (
!packageJson.peerDependenciesMeta?.[node.data.packageName]
?.optional &&
!seen.has(node.name)
) {
if (!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);
}
});
Expand Down

1 comment on commit f3465a9

@vercel
Copy link

@vercel vercel bot commented on f3465a9 Dec 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

nx-dev – ./

nx-five.vercel.app
nx-dev-git-master-nrwl.vercel.app
nx-dev-nrwl.vercel.app
nx.dev

Please sign in to comment.