Skip to content

Commit cb5bd12

Browse files
committed
fix(@angular/cli): fix access to sections of package.json that dont exist
Fixes angular#5070.
1 parent d2d788b commit cb5bd12

File tree

6 files changed

+23
-6
lines changed

6 files changed

+23
-6
lines changed

packages/@angular/cli/bin/ng

+5-3
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,11 @@ if (require('../package.json')['name'] == 'angular-cli'
9191
const packageJsonProjectPath = findUp('package.json', process.cwd(), true);
9292
if (packageJsonProjectPath && fs.existsSync(packageJsonProjectPath)) {
9393
const packageJsonProject = require(packageJsonProjectPath);
94-
const hasOldDep = !!packageJsonProject.dependencies['angular-cli'];
95-
const hasOldDevDep = !!packageJsonProject.devDependencies['angular-cli'];
96-
const hasDevDep = !!packageJsonProject.devDependencies['@angular/cli'];
94+
const deps = packageJsonProject['dependencies'] || {};
95+
const devDeps = packageJsonProject['devDependencies'] || {};
96+
const hasOldDep = !!deps['angular-cli'];
97+
const hasOldDevDep = !!devDeps['angular-cli'];
98+
const hasDevDep = !!devDeps['@angular/cli'];
9799

98100
if (hasOldDep || hasOldDevDep || !hasDevDep) {
99101
const warnings = [

packages/@angular/cli/commands/new.ts

-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ const NewCommand = Command.extend({
136136
}
137137

138138
validateProjectName(packageName);
139-
140139
commandOptions.name = packageName;
141140
if (commandOptions.dryRun) {
142141
commandOptions.skipGit = true;

packages/@angular/cli/commands/version.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ const VersionCommand = Command.extend({
7676
getDependencyVersions: function(pkg: any, prefix: string): any {
7777
const modules: any = {};
7878

79-
Object.keys(pkg.dependencies || {})
80-
.concat(Object.keys(pkg.devDependencies || {}))
79+
Object.keys(pkg['dependencies'] || {})
80+
.concat(Object.keys(pkg['devDependencies'] || {}))
8181
.filter(depName => depName && depName.startsWith(prefix))
8282
.forEach(key => modules[key] = this.getVersion(key));
8383

packages/@angular/cli/tasks/eject.ts

+3
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,9 @@ export default Task.extend({
464464

465465
// Add new dependencies based on our dependencies.
466466
const ourPackageJson = require('../package.json');
467+
if (!packageJson['devDependencies']) {
468+
packageJson['devDependencies'] = {};
469+
}
467470
packageJson['devDependencies']['webpack-dev-server']
468471
= ourPackageJson['dependencies']['webpack-dev-server'];
469472

tests/e2e/setup/010-build.ts

+6
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ export default function() {
1717
.then(() => Promise.all(Object.keys(packages).map(pkgName => {
1818
return updateJsonFile(join(packages[pkgName].dist, 'package.json'), json => {
1919
Object.keys(packages).forEach(pkgName => {
20+
if (!json['dependencies']) {
21+
json['dependencies'] = {};
22+
}
23+
if (!json['devDependencies']) {
24+
json['devDependencies'] = {};
25+
}
2026
if (json['dependencies'] && pkgName in json['dependencies']) {
2127
json['dependencies'][pkgName] = packages[pkgName].dist;
2228
} else if (json['devDependencies'] && pkgName in json['devDependencies']) {

tests/e2e/utils/assets.ts

+7
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ export function createProjectFromAsset(assetName: string) {
3838
.then(() => copyAssets(assetName))
3939
.then(dir => process.chdir(dir))
4040
.then(() => updateJsonFile('package.json', json => {
41+
if (!json['dependencies']) {
42+
json['dependencies'] = {};
43+
}
44+
if (!json['devDependencies']) {
45+
json['devDependencies'] = {};
46+
}
47+
4148
for (const packageName of Object.keys(packages)) {
4249
if (json['dependencies'].hasOwnProperty(packageName)) {
4350
json['dependencies'][packageName] = packages[packageName].dist;

0 commit comments

Comments
 (0)