From 14dd197b3cfda33521ccb969755cb6b32eb67b68 Mon Sep 17 00:00:00 2001 From: Filipe Silva Date: Wed, 21 Feb 2018 13:41:55 +0000 Subject: [PATCH] fix(@angular/cli): work around npm peerdep issue NPM hoists dependencies with peerDeps of their own, leading to unmet peer dependencies. This workaround should be safe for now since the only two packages that depend on `ajv-keywords@3.1.0` are `webpack` and `schema-utils`. See https://github.com/angular/angular-cli/issues/9691#issuecomment-367322703 and https://github.com/npm/npm/issues/19877 for more information. Fix https://github.com/angular/angular-cli/issues/9691. --- package-lock.json | 75 ++++++++++++++++++++++---- package.json | 1 + packages/@angular/cli/lib/cli/index.ts | 7 +++ packages/@angular/cli/package.json | 1 + 4 files changed, 73 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4b20b1672800..1f3903f1e54f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -406,14 +406,13 @@ } }, "ajv": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", - "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.1.1.tgz", + "integrity": "sha1-l41Zf7wrfQ5aXD3esUmmgvKr+g4=", "requires": { - "co": "4.6.0", "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "ajv-keywords": { @@ -1160,9 +1159,22 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.2.tgz", "integrity": "sha512-LCuuUj7L43TbSIqeERp+/Z2FH/NxSA48mqcWlGTSYUUKsevGafj2SpyaFVTxyWWFLkIAS3p7jDTLpNsrU7PXoA==", "requires": { - "ajv": "5.2.2", + "ajv": "5.5.2", "ajv-keywords": "2.1.0", "chalk": "2.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } } }, "supports-color": { @@ -4299,8 +4311,21 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.2.2", + "ajv": "5.5.2", "har-schema": "2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } } }, "has": { @@ -5155,6 +5180,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, "requires": { "jsonify": "0.0.0" } @@ -5177,7 +5203,8 @@ "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true }, "jsonparse": { "version": "1.3.1", @@ -7846,7 +7873,20 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", "requires": { - "ajv": "5.2.2" + "ajv": "5.5.2" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } } }, "scss-tokenizer": { @@ -9294,9 +9334,22 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.2.tgz", "integrity": "sha512-LCuuUj7L43TbSIqeERp+/Z2FH/NxSA48mqcWlGTSYUUKsevGafj2SpyaFVTxyWWFLkIAS3p7jDTLpNsrU7PXoA==", "requires": { - "ajv": "5.2.2", + "ajv": "5.5.2", "ajv-keywords": "2.1.0", "chalk": "2.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } } }, "source-map": { diff --git a/package.json b/package.json index ab034a083af7..41cdd4a1c674 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "@angular-devkit/schematics": "0.3.1", "@schematics/angular": "0.3.1", "@schematics/package-update": "0.3.1", + "ajv": "^6.1.1", "autoprefixer": "^7.2.3", "cache-loader": "^1.2.0", "chalk": "~2.2.0", diff --git a/packages/@angular/cli/lib/cli/index.ts b/packages/@angular/cli/lib/cli/index.ts index 738da3fc6acf..f72ed9dc26d3 100644 --- a/packages/@angular/cli/lib/cli/index.ts +++ b/packages/@angular/cli/lib/cli/index.ts @@ -1,3 +1,10 @@ +// TODO: remove this commented AJV require. +// We don't actually require AJV, but there is a bug with NPM and peer dependencies that is +// whose workaround is to depend on AJV. +// See https://github.com/angular/angular-cli/issues/9691#issuecomment-367322703 for details. +// We need to add a require here to satisfy the dependency checker. +// require('ajv'); + import * as path from 'path'; const cli = require('../../ember-cli/lib/cli'); diff --git a/packages/@angular/cli/package.json b/packages/@angular/cli/package.json index 816c2643f781..829f2698a819 100644 --- a/packages/@angular/cli/package.json +++ b/packages/@angular/cli/package.json @@ -34,6 +34,7 @@ "@ngtools/webpack": "1.10.0", "@schematics/angular": "0.3.1", "@schematics/package-update": "0.3.1", + "ajv": "^6.1.1", "autoprefixer": "^7.2.3", "cache-loader": "^1.2.0", "chalk": "~2.2.0",