diff --git a/packages/angular/src/schematics/init/init.spec.ts b/packages/angular/src/schematics/init/init.spec.ts index 7d46738d1d..6f55aebe79 100644 --- a/packages/angular/src/schematics/init/init.spec.ts +++ b/packages/angular/src/schematics/init/init.spec.ts @@ -28,7 +28,9 @@ describe('init', () => { expect(devDependencies['@angular/compiler-cli']).toBeDefined(); expect(devDependencies['@angular/language-service']).toBeDefined(); expect(devDependencies['@angular-devkit/build-angular']).toBeDefined(); - expect(devDependencies['codelyzer']).toBeDefined(); + + // codelyzer should no longer be there by default + expect(devDependencies['codelyzer']).toBeUndefined(); }); it('should add a postinstall script for ngcc', async () => { @@ -208,6 +210,22 @@ describe('init', () => { }); }); + describe('--linter', () => { + describe('tslint', () => { + it('should add codelyzer', async () => { + const tree = await runSchematic( + 'init', + { + linter: 'tslint', + }, + appTree + ); + const { devDependencies } = readJsonInTree(tree, 'package.json'); + expect(devDependencies['codelyzer']).toBeDefined(); + }); + }); + }); + describe('defaultCollection', () => { it('should be set if none was set before', async () => { const result = await runSchematic('init', {}, appTree); diff --git a/packages/angular/src/schematics/init/init.ts b/packages/angular/src/schematics/init/init.ts index 813830f331..f9de54bec6 100755 --- a/packages/angular/src/schematics/init/init.ts +++ b/packages/angular/src/schematics/init/init.ts @@ -13,6 +13,7 @@ import { setDefaultCollection, updateJsonInTree, updateWorkspace, + Linter, } from '@nrwl/workspace'; import { angularDevkitVersion, @@ -22,29 +23,29 @@ import { } from '../../utils/versions'; import { Schema } from './schema'; import { E2eTestRunner, UnitTestRunner } from '../../utils/test-runners'; -import { stripIndents } from '@angular-devkit/core/src/utils/literals'; -const updateDependencies = addDepsToPackageJson( - { - '@angular/animations': angularVersion, - '@angular/common': angularVersion, - '@angular/compiler': angularVersion, - '@angular/core': angularVersion, - '@angular/forms': angularVersion, - '@angular/platform-browser': angularVersion, - '@angular/platform-browser-dynamic': angularVersion, - '@angular/router': angularVersion, - rxjs: rxjsVersion, - tslib: '^2.0.0', - 'zone.js': '^0.10.2', - }, - { - '@angular/compiler-cli': angularVersion, - '@angular/language-service': angularVersion, - '@angular-devkit/build-angular': angularDevkitVersion, - codelyzer: '^6.0.0', - } -); +const updateDependencies = (options: Pick): Rule => + addDepsToPackageJson( + { + '@angular/animations': angularVersion, + '@angular/common': angularVersion, + '@angular/compiler': angularVersion, + '@angular/core': angularVersion, + '@angular/forms': angularVersion, + '@angular/platform-browser': angularVersion, + '@angular/platform-browser-dynamic': angularVersion, + '@angular/router': angularVersion, + rxjs: rxjsVersion, + tslib: '^2.0.0', + 'zone.js': '^0.10.2', + }, + { + '@angular/compiler-cli': angularVersion, + '@angular/language-service': angularVersion, + '@angular-devkit/build-angular': angularDevkitVersion, + codelyzer: options.linter === Linter.TsLint ? '^6.0.0' : undefined, + } + ); export function addUnitTestRunner( options: Pick @@ -168,7 +169,7 @@ export default function (options: Schema): Rule { setDefaults(options), // TODO: Remove this when ngcc can be run in parallel addPostinstall(), - updateDependencies, + updateDependencies(options), addUnitTestRunner(options), addE2eTestRunner(options), formatFiles(), diff --git a/packages/angular/src/schematics/init/schema.d.ts b/packages/angular/src/schematics/init/schema.d.ts index b56416e093..ac6c3dcb5b 100644 --- a/packages/angular/src/schematics/init/schema.d.ts +++ b/packages/angular/src/schematics/init/schema.d.ts @@ -1,8 +1,11 @@ import { E2eTestRunner, UnitTestRunner } from '../../utils/test-runners'; +import { Linter } from '@nrwl/workspace'; + export interface Schema { unitTestRunner: UnitTestRunner; e2eTestRunner?: E2eTestRunner; skipFormat: boolean; skipInstall?: boolean; style?: string; + linter: Linter; } diff --git a/packages/angular/src/schematics/init/schema.json b/packages/angular/src/schematics/init/schema.json index ff815a20fd..9afdd3390b 100644 --- a/packages/angular/src/schematics/init/schema.json +++ b/packages/angular/src/schematics/init/schema.json @@ -26,6 +26,12 @@ "description": "Skip formatting files", "type": "boolean", "default": false + }, + "linter": { + "description": "The tool to use for running lint checks.", + "type": "string", + "enum": ["tslint", "eslint"], + "default": "eslint" } } }