fix(core): generated package.json should not include duplicates and optional peer deeps (#13438)
This commit is contained in:
parent
db3499d3a6
commit
a95b91d433
@ -227,7 +227,9 @@ describe('Node Applications', () => {
|
|||||||
describe('Build Node apps', () => {
|
describe('Build Node apps', () => {
|
||||||
beforeEach(() => newProject());
|
beforeEach(() => newProject());
|
||||||
|
|
||||||
it('should generate a package.json with the `--generatePackageJson` flag', async () => {
|
afterEach(() => cleanupProject());
|
||||||
|
|
||||||
|
it('should generate a package.json with the `--generatePackageJson` flag MMM', async () => {
|
||||||
const scope = newProject();
|
const scope = newProject();
|
||||||
const nestapp = uniq('nestapp');
|
const nestapp = uniq('nestapp');
|
||||||
runCLI(`generate @nrwl/nest:app ${nestapp} --linter=eslint`);
|
runCLI(`generate @nrwl/nest:app ${nestapp} --linter=eslint`);
|
||||||
@ -251,9 +253,6 @@ describe('Build Node apps', () => {
|
|||||||
expect(
|
expect(
|
||||||
satisfies(packageJson.dependencies['@nestjs/core'], '^9.0.0')
|
satisfies(packageJson.dependencies['@nestjs/core'], '^9.0.0')
|
||||||
).toBeTruthy();
|
).toBeTruthy();
|
||||||
expect(
|
|
||||||
satisfies(packageJson.dependencies['@nestjs/platform-express'], '^9.0.0')
|
|
||||||
).toBeTruthy();
|
|
||||||
expect(
|
expect(
|
||||||
satisfies(packageJson.dependencies['reflect-metadata'], '^0.1.13')
|
satisfies(packageJson.dependencies['reflect-metadata'], '^0.1.13')
|
||||||
).toBeTruthy();
|
).toBeTruthy();
|
||||||
|
|||||||
@ -36,6 +36,7 @@
|
|||||||
"@yarnpkg/lockfile": "^1.1.0",
|
"@yarnpkg/lockfile": "^1.1.0",
|
||||||
"@yarnpkg/parsers": "^3.0.0-rc.18",
|
"@yarnpkg/parsers": "^3.0.0-rc.18",
|
||||||
"@zkochan/js-yaml": "0.0.6",
|
"@zkochan/js-yaml": "0.0.6",
|
||||||
|
"axios": "^1.0.0",
|
||||||
"chalk": "4.1.0",
|
"chalk": "4.1.0",
|
||||||
"chokidar": "^3.5.1",
|
"chokidar": "^3.5.1",
|
||||||
"cli-cursor": "3.1.0",
|
"cli-cursor": "3.1.0",
|
||||||
@ -49,6 +50,7 @@
|
|||||||
"fs-extra": "^10.1.0",
|
"fs-extra": "^10.1.0",
|
||||||
"glob": "7.1.4",
|
"glob": "7.1.4",
|
||||||
"ignore": "^5.0.4",
|
"ignore": "^5.0.4",
|
||||||
|
"js-yaml": "4.1.0",
|
||||||
"jsonc-parser": "3.2.0",
|
"jsonc-parser": "3.2.0",
|
||||||
"minimatch": "3.0.5",
|
"minimatch": "3.0.5",
|
||||||
"npm-run-path": "^4.0.1",
|
"npm-run-path": "^4.0.1",
|
||||||
@ -62,9 +64,7 @@
|
|||||||
"tslib": "^2.3.0",
|
"tslib": "^2.3.0",
|
||||||
"v8-compile-cache": "2.3.0",
|
"v8-compile-cache": "2.3.0",
|
||||||
"yargs": "^17.6.2",
|
"yargs": "^17.6.2",
|
||||||
"yargs-parser": "21.1.1",
|
"yargs-parser": "21.1.1"
|
||||||
"js-yaml": "4.1.0",
|
|
||||||
"axios": "^1.0.0"
|
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@swc-node/register": "^1.4.2",
|
"@swc-node/register": "^1.4.2",
|
||||||
|
|||||||
@ -40,7 +40,10 @@ export function createPackageJson(
|
|||||||
|
|
||||||
const rootPackageJson = readJsonFile(`${options.root || '.'}/package.json`);
|
const rootPackageJson = readJsonFile(`${options.root || '.'}/package.json`);
|
||||||
Object.entries(npmDeps).forEach(([packageName, version]) => {
|
Object.entries(npmDeps).forEach(([packageName, version]) => {
|
||||||
if (rootPackageJson.devDependencies?.[packageName]) {
|
if (
|
||||||
|
rootPackageJson.devDependencies?.[packageName] &&
|
||||||
|
!packageJson.dependencies[packageName]
|
||||||
|
) {
|
||||||
packageJson.devDependencies[packageName] = version;
|
packageJson.devDependencies[packageName] = version;
|
||||||
} else {
|
} else {
|
||||||
packageJson.dependencies[packageName] = version;
|
packageJson.dependencies[packageName] = version;
|
||||||
@ -106,8 +109,12 @@ function recursivelyCollectPeerDependencies(
|
|||||||
.map((dependency) => graph.externalNodes[dependency])
|
.map((dependency) => graph.externalNodes[dependency])
|
||||||
.filter(Boolean)
|
.filter(Boolean)
|
||||||
.forEach((node) => {
|
.forEach((node) => {
|
||||||
list[node.data.packageName] = node.data.version;
|
if (
|
||||||
recursivelyCollectPeerDependencies(node.name, graph, list, seen);
|
!packageJson.peerDependenciesMeta?.[node.data.packageName]?.optional
|
||||||
|
) {
|
||||||
|
list[node.data.packageName] = node.data.version;
|
||||||
|
recursivelyCollectPeerDependencies(node.name, graph, list, seen);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
return list;
|
return list;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user