From b7a0bda976b07d28d1282ea28778430a5773f425 Mon Sep 17 00:00:00 2001 From: Hans Larsen Date: Fri, 27 Apr 2018 10:35:23 -0700 Subject: [PATCH] fix(@angular/cli): show a nicer error if packages does not support schematics Does not show a better error if there are schematics but ng-add isnt found. That will simply show "schematics ng-add not found" or something alike, which is fine here. fixes #10467 --- package-lock.json | 18 +++++++++--------- packages/@angular/cli/commands/add.ts | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4d3ffb410e57..5524b205b2af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,14 +5,14 @@ "requires": true, "dependencies": { "@angular-devkit/architect": { - "version": "github:angular/angular-devkit-architect-builds#02f2b0de50864f467b6aa9cfdb3d4de5e15678d8", + "version": "github:angular/angular-devkit-architect-builds#74d483c56722413ba0244924419207fe992c32ca", "requires": { - "@angular-devkit/core": "github:angular/angular-devkit-core-builds#4249c56ddd026599ec4800bcf2dd27df8345dbeb", + "@angular-devkit/core": "github:angular/angular-devkit-core-builds#e23d120163747de5326fb90b553abdb42dbc85f4", "rxjs": "6.0.0" }, "dependencies": { "@angular-devkit/core": { - "version": "github:angular/angular-devkit-core-builds#4249c56ddd026599ec4800bcf2dd27df8345dbeb", + "version": "github:angular/angular-devkit-core-builds#e23d120163747de5326fb90b553abdb42dbc85f4", "requires": { "ajv": "6.4.0", "chokidar": "1.7.0", @@ -23,7 +23,7 @@ } }, "@angular-devkit/core": { - "version": "github:angular/angular-devkit-core-builds#4249c56ddd026599ec4800bcf2dd27df8345dbeb", + "version": "github:angular/angular-devkit-core-builds#e23d120163747de5326fb90b553abdb42dbc85f4", "requires": { "ajv": "6.4.0", "chokidar": "1.7.0", @@ -32,15 +32,15 @@ } }, "@angular-devkit/schematics": { - "version": "github:angular/angular-devkit-schematics-builds#4144a9821d7016c427a41071d80af73ce9c447ba", + "version": "github:angular/angular-devkit-schematics-builds#b63dcf777c08bc48788d9bd56fc993115b846748", "requires": { - "@angular-devkit/core": "github:angular/angular-devkit-core-builds#4249c56ddd026599ec4800bcf2dd27df8345dbeb", + "@angular-devkit/core": "github:angular/angular-devkit-core-builds#e23d120163747de5326fb90b553abdb42dbc85f4", "@ngtools/json-schema": "1.1.0", "rxjs": "6.0.0" }, "dependencies": { "@angular-devkit/core": { - "version": "github:angular/angular-devkit-core-builds#4249c56ddd026599ec4800bcf2dd27df8345dbeb", + "version": "github:angular/angular-devkit-core-builds#e23d120163747de5326fb90b553abdb42dbc85f4", "requires": { "ajv": "6.4.0", "chokidar": "1.7.0", @@ -1681,7 +1681,7 @@ }, "event-stream": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { @@ -4099,7 +4099,7 @@ }, "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, diff --git a/packages/@angular/cli/commands/add.ts b/packages/@angular/cli/commands/add.ts index 533c28e96c5c..5486cf46f244 100644 --- a/packages/@angular/cli/commands/add.ts +++ b/packages/@angular/cli/commands/add.ts @@ -1,3 +1,5 @@ +import { tags } from '@angular-devkit/core'; +import { NodePackageDoesNotSupportSchematics } from '@angular-devkit/schematics/tools'; import chalk from 'chalk'; import { CommandScope, Option } from '../models/command'; import { parseOptions } from '../models/command-runner'; @@ -81,6 +83,17 @@ export default class AddCommand extends SchematicCommand { force: false, }; - return await this.runSchematic(runOptions); + try { + return await this.runSchematic(runOptions); + } catch (e) { + if (e instanceof NodePackageDoesNotSupportSchematics) { + throw new SilentError(tags.oneLine` + The package that you are trying to add does not support schematics. You can try using + a different version of the package or contact the package author to add ng-add support. + `); + } + + throw e; + } } }