Skip to content

Commit 0c1c391

Browse files
clydinhansl
authored andcommitted
chore(deps): validate root package.json (angular#3521)
1 parent 3329d46 commit 0c1c391

File tree

2 files changed

+42
-16
lines changed

2 files changed

+42
-16
lines changed

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
"@angular/compiler-cli": "2.2.3",
4747
"@angular/core": "2.2.3",
4848
"@angular/tsc-wrapped": "0.4.0",
49-
"angular2-template-loader": "^0.5.0",
5049
"async": "^2.1.4",
5150
"autoprefixer": "^6.5.3",
5251
"chalk": "^1.1.3",
@@ -88,7 +87,6 @@
8887
"node-modules-path": "^1.0.0",
8988
"node-sass": "^3.10.1",
9089
"nopt": "^3.0.1",
91-
"npm-run-all": "^3.0.0",
9290
"offline-plugin": "^3.4.1",
9391
"opn": "4.0.1",
9492
"ora": "^0.2.0",
@@ -103,6 +101,7 @@
103101
"resolve": "^1.1.7",
104102
"rimraf": "^2.5.3",
105103
"rsvp": "^3.0.17",
104+
"rxjs": "5.0.0-beta.12",
106105
"sass-loader": "^4.0.1",
107106
"script-loader": "^0.7.0",
108107
"semver": "^5.1.0",
@@ -162,6 +161,7 @@
162161
"mocha": "^2.4.5",
163162
"mock-fs": "3.10.0",
164163
"npm-run": "^4.1.0",
164+
"npm-run-all": "^3.0.0",
165165
"object-assign": "^4.0.1",
166166
"request": "^2.74.0",
167167
"resolve-bin": "^0.4.0",

scripts/publish/validate_dependencies.js

+40-14
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,28 @@ function listRequiredModules(source) {
6969
});
7070
}
7171

72+
function reportMissingDependencies(missingDeps) {
73+
if (missingDeps.length == 0) {
74+
console.log(chalk.green(' no dependency missing from package.json.'));
75+
} else {
76+
console.log(chalk.yellow(` ${missingDeps.length} missing from package.json:`));
77+
missingDeps.forEach(md => console.log(` ${md}`));
78+
exitCode = 1;
79+
}
80+
}
81+
82+
function reportExcessiveDependencies(overDeps) {
83+
if (overDeps.length == 0) {
84+
console.log(chalk.green(' no excessive dependencies in package.json.'));
85+
} else {
86+
console.log(chalk.yellow(` ${overDeps.length} excessive dependencies in package.json:`));
87+
overDeps.forEach(md => console.log(` ${md}`));
88+
exitCode = 1;
89+
}
90+
}
7291

7392
let exitCode = 0;
93+
const overallDeps = [];
7494
for (const packageName of Object.keys(packages)) {
7595
console.log(chalk.green(`Reading dependencies of "${packageName}".`));
7696

@@ -92,6 +112,7 @@ for (const packageName of Object.keys(packages)) {
92112
const dependencies = Object.keys(importMap)
93113
// Filter out the node packages that should not be depended on.
94114
.filter(x => NODE_PACKAGES.indexOf(x) == -1);
115+
overallDeps.push(...dependencies);
95116

96117
console.log(chalk.green(` found ${dependencies.length} dependencies...`));
97118
const packageJson = JSON.parse(fs.readFileSync(packages[packageName].packageJson, 'utf8'));
@@ -101,25 +122,30 @@ for (const packageName of Object.keys(packages)) {
101122
.concat(Object.keys(packageJson['peerDependencies'] || {}));
102123

103124
const missingDeps = dependencies.filter(d => allDeps.indexOf(d) == -1);
104-
if (missingDeps.length == 0) {
105-
console.log(chalk.green(' no dependency missing from package.json.'));
106-
} else {
107-
console.log(chalk.yellow(` ${missingDeps.length} missing from package.json:`));
108-
missingDeps.forEach(md => console.log(` ${md}`));
109-
exitCode = 1;
110-
}
125+
reportMissingDependencies(missingDeps);
111126

112127
const overDeps = allDeps.filter(d => dependencies.indexOf(d) == -1)
113128
.filter(x => ANGULAR_PACKAGES.indexOf(x) == -1);
114-
if (overDeps.length == 0) {
115-
console.log(chalk.green(' no excessive dependencies in package.json.'));
116-
} else {
117-
console.log(chalk.yellow(` ${overDeps.length} excessive dependencies in package.json:`));
118-
overDeps.forEach(md => console.log(` ${md}`));
119-
exitCode = 1;
120-
}
129+
reportExcessiveDependencies(overDeps);
121130

122131
console.log('');
123132
}
124133

134+
console.log(chalk.green('Validating root package. [devDependencies ignored]'));
135+
const rootPackagePath = path.join(__dirname, '../../package.json');
136+
const rootPackageJson = JSON.parse(fs.readFileSync(rootPackagePath, 'utf8'));
137+
// devDependencies are ignored
138+
const allRootDeps = []
139+
.concat(Object.keys(rootPackageJson['dependencies'] || {}))
140+
.concat(Object.keys(rootPackageJson['peerDependencies'] || {}));
141+
142+
const internalPackages = Object.keys(packages);
143+
const missingRootDeps = overallDeps.filter(d => allRootDeps.indexOf(d) == -1)
144+
.filter(d => internalPackages.indexOf(d) == -1);
145+
reportMissingDependencies(missingRootDeps);
146+
147+
const overRootDeps = allRootDeps.filter(d => overallDeps.indexOf(d) == -1)
148+
.filter(x => ANGULAR_PACKAGES.indexOf(x) == -1);
149+
reportExcessiveDependencies(overRootDeps);
150+
125151
process.exit(exitCode);

0 commit comments

Comments
 (0)