From 5628fcd75feb88815a81ef1009bd2c62840be940 Mon Sep 17 00:00:00 2001 From: Cyrille Tuzi Date: Sat, 24 Feb 2018 15:04:57 +0100 Subject: [PATCH 1/2] feat(@schematics/angular): editor option --- .../angular/application/files/__dot__vscode/settings.json | 3 +++ packages/schematics/angular/application/index.ts | 1 + packages/schematics/angular/application/schema.d.ts | 4 ++++ packages/schematics/angular/application/schema.json | 5 +++++ 4 files changed, 13 insertions(+) create mode 100644 packages/schematics/angular/application/files/__dot__vscode/settings.json diff --git a/packages/schematics/angular/application/files/__dot__vscode/settings.json b/packages/schematics/angular/application/files/__dot__vscode/settings.json new file mode 100644 index 0000000000..d7af577958 --- /dev/null +++ b/packages/schematics/angular/application/files/__dot__vscode/settings.json @@ -0,0 +1,3 @@ +{ + "tslint.alwaysShowRuleFailuresAsWarnings": true +} diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index 6e0db4e4a5..28dd6e1f4c 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -80,6 +80,7 @@ export default function (options: ApplicationOptions): Rule { options.minimal ? filter(minimalPathFilter) : noop(), options.skipGit ? filter(path => !path.endsWith('/__dot__gitignore')) : noop(), options.serviceWorker ? noop() : filter(path => !path.endsWith('/ngsw-config.json')), + options.editor === 'vscode' ? noop() : filter(path => path.indexOf('vscode') === -1), template({ utils: strings, ...options, diff --git a/packages/schematics/angular/application/schema.d.ts b/packages/schematics/angular/application/schema.d.ts index 091f548110..00cf3ff867 100644 --- a/packages/schematics/angular/application/schema.d.ts +++ b/packages/schematics/angular/application/schema.d.ts @@ -79,4 +79,8 @@ export interface Schema { * Installs the @angular/service-worker. */ serviceWorker?: boolean; + /** + * Specifies the editor used, for specific configuration. + */ + editor?: ('vscode'); } diff --git a/packages/schematics/angular/application/schema.json b/packages/schematics/angular/application/schema.json index 2166263131..c7186cf367 100644 --- a/packages/schematics/angular/application/schema.json +++ b/packages/schematics/angular/application/schema.json @@ -127,6 +127,11 @@ "description": "Installs the @angular/service-worker.", "type": "boolean", "default": false + }, + "editor": { + "description": "Specifies the editor used, for specific configuration.", + "enum": ["vscode"], + "type": "string" } }, "required": [ From 2c856254fa7c3bb8441c19fe181fdaf02ff0730b Mon Sep 17 00:00:00 2001 From: Cyrille Tuzi Date: Tue, 8 May 2018 14:38:14 +0200 Subject: [PATCH 2/2] feat(@schematics/angular): editor option --- packages/schematics/angular/application/index.ts | 1 - packages/schematics/angular/application/schema.d.ts | 4 ---- packages/schematics/angular/application/schema.json | 5 ----- packages/schematics/angular/ng-new/index.ts | 1 + packages/schematics/angular/ng-new/schema.d.ts | 4 ++++ packages/schematics/angular/ng-new/schema.json | 5 +++++ .../files/__dot__vscode/settings.json | 0 packages/schematics/angular/workspace/index.ts | 3 +++ packages/schematics/angular/workspace/index_spec.ts | 8 ++++++++ packages/schematics/angular/workspace/schema.d.ts | 4 ++++ packages/schematics/angular/workspace/schema.json | 5 +++++ 11 files changed, 30 insertions(+), 10 deletions(-) rename packages/schematics/angular/{application => workspace}/files/__dot__vscode/settings.json (100%) diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index ca197fd568..6bf876884a 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -321,7 +321,6 @@ export default function (options: ApplicationOptions): Rule { ])), mergeWith( apply(url('./files/root'), [ - options.editor === 'vscode' ? noop() : filter(path => path.indexOf('vscode') === -1), template({ utils: strings, ...options, diff --git a/packages/schematics/angular/application/schema.d.ts b/packages/schematics/angular/application/schema.d.ts index 79ea94018b..94b4b3faed 100644 --- a/packages/schematics/angular/application/schema.d.ts +++ b/packages/schematics/angular/application/schema.d.ts @@ -47,8 +47,4 @@ export interface Schema { * Do not add dependencies to package.json (e.g., --skipPackageJson) */ skipPackageJson: boolean; - /** - * Specifies the editor used, for specific configuration. - */ - editor?: ('vscode'); } diff --git a/packages/schematics/angular/application/schema.json b/packages/schematics/angular/application/schema.json index 57f6698fac..0bf4bd5469 100644 --- a/packages/schematics/angular/application/schema.json +++ b/packages/schematics/angular/application/schema.json @@ -62,11 +62,6 @@ "type": "boolean", "default": false, "description": "Do not add dependencies to package.json." - }, - "editor": { - "description": "Specifies the editor used, for specific configuration.", - "enum": ["vscode"], - "type": "string" } }, "required": [] diff --git a/packages/schematics/angular/ng-new/index.ts b/packages/schematics/angular/ng-new/index.ts index 7e44a9682a..8ccf55f8bc 100644 --- a/packages/schematics/angular/ng-new/index.ts +++ b/packages/schematics/angular/ng-new/index.ts @@ -40,6 +40,7 @@ export default function (options: NgNewOptions): Rule { name: options.name, version: options.version, newProjectRoot: options.newProjectRoot || 'projects', + editor: options.editor, }; const applicationOptions: ApplicationOptions = { projectRoot: '', diff --git a/packages/schematics/angular/ng-new/schema.d.ts b/packages/schematics/angular/ng-new/schema.d.ts index dfdc8f1082..03791fe23a 100644 --- a/packages/schematics/angular/ng-new/schema.d.ts +++ b/packages/schematics/angular/ng-new/schema.d.ts @@ -67,4 +67,8 @@ export interface Schema { * Skip creating spec files. */ skipTests?: boolean; + /** + * Specifies the editor used, for specific configuration. + */ + editor?: ('vscode'); } diff --git a/packages/schematics/angular/ng-new/schema.json b/packages/schematics/angular/ng-new/schema.json index 9a53a97e89..e3608028e0 100644 --- a/packages/schematics/angular/ng-new/schema.json +++ b/packages/schematics/angular/ng-new/schema.json @@ -111,6 +111,11 @@ "type": "boolean", "default": false, "alias": "S" + }, + "editor": { + "description": "Specifies the editor used, for specific configuration.", + "enum": ["vscode"], + "type": "string" } }, "required": [ diff --git a/packages/schematics/angular/application/files/__dot__vscode/settings.json b/packages/schematics/angular/workspace/files/__dot__vscode/settings.json similarity index 100% rename from packages/schematics/angular/application/files/__dot__vscode/settings.json rename to packages/schematics/angular/workspace/files/__dot__vscode/settings.json diff --git a/packages/schematics/angular/workspace/index.ts b/packages/schematics/angular/workspace/index.ts index 98f9aa0069..8047766c71 100644 --- a/packages/schematics/angular/workspace/index.ts +++ b/packages/schematics/angular/workspace/index.ts @@ -11,7 +11,9 @@ import { SchematicContext, Tree, apply, + filter, mergeWith, + noop, template, url, } from '@angular-devkit/schematics'; @@ -22,6 +24,7 @@ export default function (options: WorkspaceOptions): Rule { return (host: Tree, context: SchematicContext) => { return mergeWith(apply(url('./files'), [ + options.editor === 'vscode' ? noop() : filter(path => path.indexOf('vscode') === -1), template({ utils: strings, ...options, diff --git a/packages/schematics/angular/workspace/index_spec.ts b/packages/schematics/angular/workspace/index_spec.ts index 669403396c..33070f24ec 100644 --- a/packages/schematics/angular/workspace/index_spec.ts +++ b/packages/schematics/angular/workspace/index_spec.ts @@ -55,4 +55,12 @@ describe('Workspace Schematic', () => { expect(pkg.dependencies['zone.js']).toEqual(latestVersions.ZoneJs); expect(pkg.devDependencies['typescript']).toEqual(latestVersions.TypeScript); }); + + it('should create VS Code settings', () => { + const options = { ...defaultOptions, editor: 'vscode' }; + + const tree = schematicRunner.runSchematic('workspace', options); + const files = tree.files; + expect(files.indexOf('/.vscode/settings.json')).toBeGreaterThanOrEqual(0); + }); }); diff --git a/packages/schematics/angular/workspace/schema.d.ts b/packages/schematics/angular/workspace/schema.d.ts index 0db451ca11..cd810ac8cd 100644 --- a/packages/schematics/angular/workspace/schema.d.ts +++ b/packages/schematics/angular/workspace/schema.d.ts @@ -35,4 +35,8 @@ export interface Schema { * The version of the Angular CLI to use. */ version?: string; + /** + * Specifies the editor used, for specific configuration. + */ + editor?: ('vscode'); } diff --git a/packages/schematics/angular/workspace/schema.json b/packages/schematics/angular/workspace/schema.json index 81e2a50423..0b7b4b285a 100644 --- a/packages/schematics/angular/workspace/schema.json +++ b/packages/schematics/angular/workspace/schema.json @@ -65,6 +65,11 @@ "type": "string", "description": "The version of the Angular CLI to use.", "visible": false + }, + "editor": { + "description": "Specifies the editor used, for specific configuration.", + "enum": ["vscode"], + "type": "string" } }, "required": [