Skip to content

Commit a67633e

Browse files
authored
chore: fix the use of mixed dep/devdeps (#27652)
`fs-extra` is sometimes not included in the `npm pack` tarball, depending on the version of NPM. The reason is that it occurs in both `dependencies` and `devDependencies`, which is not a useful dependency specification. This is breaking jsii builds, depending on the NPM version used. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
1 parent fc3be31 commit a67633e

File tree

9 files changed

+25
-16
lines changed

9 files changed

+25
-16
lines changed

packages/@aws-cdk/app-staging-synthesizer-alpha/package.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,6 @@
8383
"AWSLINT_BASE_CONSTRUCT": true
8484
}
8585
},
86-
"dependencies": {
87-
"aws-cdk-lib": "0.0.0",
88-
"constructs": "^10.0.0"
89-
},
9086
"devDependencies": {
9187
"aws-cdk-lib": "0.0.0",
9288
"@aws-cdk/integ-runner": "0.0.0",

packages/@aws-cdk/aws-appconfig-alpha/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,6 @@
8787
"jest": "^29.7.0"
8888
},
8989
"dependencies": {
90-
"aws-cdk-lib": "0.0.0",
91-
"constructs": "^10.0.0",
9290
"mime-types": "^2.1.35"
9391
},
9492
"homepage": "https://github.com/aws/aws-cdk",

packages/@aws-cdk/cx-api/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@
7979
"organization": true
8080
},
8181
"dependencies": {
82-
"@aws-cdk/cloud-assembly-schema": "0.0.0",
8382
"semver": "^7.5.4"
8483
},
8584
"peerDependencies": {

packages/@aws-cdk/example-construct-library/package.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,6 @@
8080
"@types/jest": "^29.5.5",
8181
"jest": "^29.7.0"
8282
},
83-
"dependencies": {
84-
"aws-cdk-lib": "0.0.0",
85-
"constructs": "^10.0.0"
86-
},
8783
"homepage": "https://github.com/aws/aws-cdk",
8884
"peerDependencies": {
8985
"aws-cdk-lib": "^0.0.0",

packages/aws-cdk-lib/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@
108108
"organization": true
109109
},
110110
"license": "Apache-2.0",
111-
"bundledDependencies": [
111+
"bundleDependencies": [
112112
"@balena/dockerignore",
113113
"case",
114114
"fs-extra",
@@ -176,7 +176,6 @@
176176
"delay": "5.0.0",
177177
"esbuild": "^0.19.4",
178178
"fast-check": "^3.13.1",
179-
"fs-extra": "^11.1.1",
180179
"jest": "^29.7.0",
181180
"jest-each": "^29.7.0",
182181
"lambda-tester": "^4.0.1",

packages/aws-cdk/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@
8282
"aws-cdk-lib": "0.0.0",
8383
"aws-sdk-mock": "5.6.0",
8484
"axios": "^0.27.2",
85-
"cdk-from-cfn": "^0.47.0",
8685
"constructs": "^10.0.0",
8786
"fast-check": "^3.13.1",
8887
"jest": "^29.7.0",

tools/@aws-cdk/cdk-build-tools/config/eslintrc.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ module.exports = {
7373
'**/test/**', // --> Unit tests
7474
],
7575
optionalDependencies: false, // Disallow importing optional dependencies (those shouldn't be in use in the project)
76-
peerDependencies: false, // Disallow importing peer dependencies (that aren't also direct dependencies)
7776
},
7877
],
7978

tools/@aws-cdk/cfn2ts/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
},
4141
"devDependencies": {
4242
"@aws-cdk/cdk-build-tools": "0.0.0",
43-
"@aws-cdk/pkglint": "0.0.0",
4443
"@types/fs-extra": "^9.0.13",
4544
"@types/jest": "^29.5.5",
4645
"@types/yargs": "^15.0.16",

tools/@aws-cdk/pkglint/lib/rules.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1258,6 +1258,11 @@ export class PkgLintAsScript extends ValidationRule {
12581258
public readonly name = 'package-info/scripts/pkglint';
12591259

12601260
public validate(pkg: PackageJson): void {
1261+
if (pkg.packageName === '@aws-cdk/cfn2ts') {
1262+
// cfn2ts uses pkglint as a real dependency, and it can't be both.
1263+
return;
1264+
}
1265+
12611266
const script = 'pkglint -f';
12621267

12631268
expectDevDependency(this.name, pkg, '@aws-cdk/pkglint', `${PKGLINT_VERSION}`); // eslint-disable-line @typescript-eslint/no-require-imports
@@ -1301,6 +1306,24 @@ export class NoStarDeps extends ValidationRule {
13011306
}
13021307
}
13031308

1309+
export class NoMixedDeps extends ValidationRule {
1310+
public readonly name = 'dependencies/no-mixed-deps';
1311+
1312+
public validate(pkg: PackageJson) {
1313+
const deps = Object.keys(pkg.json.dependencies ?? {});
1314+
const devDeps = Object.keys(pkg.json.devDependencies ?? {});
1315+
1316+
const shared = deps.filter((dep) => devDeps.includes(dep));
1317+
for (const dep of shared) {
1318+
pkg.report({
1319+
ruleName: this.name,
1320+
message: `dependency may not be both in dependencies and devDependencies: ${dep}`,
1321+
fix: () => pkg.removeDevDependency(dep),
1322+
});
1323+
}
1324+
}
1325+
}
1326+
13041327
interface VersionCount {
13051328
version: string;
13061329
count: number;
@@ -1836,6 +1859,7 @@ function shouldUseCDKBuildTools(pkg: PackageJson) {
18361859
const exclude = [
18371860
'@aws-cdk/cdk-build-tools',
18381861
'@aws-cdk/script-tests',
1862+
'@aws-cdk/cfn2ts',
18391863
'awslint',
18401864
];
18411865

0 commit comments

Comments
 (0)