diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index 09608e0c0a58..f8e5e122e048 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -31,6 +31,7 @@ import { } from '../utility/config'; import { NodeDependencyType, addPackageJsonDependency } from '../utility/dependencies'; import { latestVersions } from '../utility/latest-versions'; +import { applyLintFix } from '../utility/lint-fix'; import { validateProjectName } from '../utility/validation'; import { Builders, @@ -372,6 +373,7 @@ export default function (options: ApplicationOptions): Rule { ]), MergeStrategy.Overwrite), options.minimal ? noop() : schematic('e2e', e2eOptions), options.skipPackageJson ? noop() : addDependenciesToPackageJson(options), + options.lintFix ? applyLintFix(sourceDir) : noop(), ]); }; } diff --git a/packages/schematics/angular/application/schema.json b/packages/schematics/angular/application/schema.json index 9dde81b57487..9c245ced0ebc 100644 --- a/packages/schematics/angular/application/schema.json +++ b/packages/schematics/angular/application/schema.json @@ -78,6 +78,11 @@ "description": "Skip installing dependency packages.", "type": "boolean", "default": false + }, + "lintFix": { + "type": "boolean", + "default": false, + "description": "When true, applies lint fixes after generating the application." } }, "required": [ diff --git a/packages/schematics/angular/class/index.ts b/packages/schematics/angular/class/index.ts index 0c34613e8dc8..93d3ff880520 100644 --- a/packages/schematics/angular/class/index.ts +++ b/packages/schematics/angular/class/index.ts @@ -13,6 +13,7 @@ import { Tree, apply, branchAndMerge, + chain, filter, mergeWith, move, @@ -20,6 +21,7 @@ import { template, url, } from '@angular-devkit/schematics'; +import { applyLintFix } from '../utility/lint-fix'; import { parseName } from '../utility/parse-name'; import { buildDefaultPath, getProject } from '../utility/project'; import { Schema as ClassOptions } from './schema'; @@ -54,6 +56,9 @@ export default function (options: ClassOptions): Rule { move(parsedPath.path), ]); - return branchAndMerge(mergeWith(templateSource)); + return chain([ + branchAndMerge(mergeWith(templateSource)), + options.lintFix ? applyLintFix(options.path) : noop(), + ]); }; } diff --git a/packages/schematics/angular/class/schema.json b/packages/schematics/angular/class/schema.json index c9b39d1d5abe..9a6362070519 100644 --- a/packages/schematics/angular/class/schema.json +++ b/packages/schematics/angular/class/schema.json @@ -42,6 +42,11 @@ "type": "string", "description": "Adds a developer-defined type to the filename, in the format \"name.type.ts\".", "default": "" + }, + "lintFix": { + "type": "boolean", + "default": false, + "description": "When true, applies lint fixes after generating the class." } }, "required": [ diff --git a/packages/schematics/angular/library/index.ts b/packages/schematics/angular/library/index.ts index 48af3d281104..2629dd3a9603 100644 --- a/packages/schematics/angular/library/index.ts +++ b/packages/schematics/angular/library/index.ts @@ -27,6 +27,7 @@ import { } from '../utility/config'; import { NodeDependencyType, addPackageJsonDependency } from '../utility/dependencies'; import { latestVersions } from '../utility/latest-versions'; +import { applyLintFix } from '../utility/lint-fix'; import { validateProjectName } from '../utility/validation'; import { Builders, @@ -246,6 +247,7 @@ export default function (options: LibraryOptions): Rule { path: sourceDir, project: options.name, }), + options.lintFix ? applyLintFix(sourceDir) : noop(), (_tree: Tree, context: SchematicContext) => { if (!options.skipPackageJson && !options.skipInstall) { context.addTask(new NodePackageInstallTask()); diff --git a/packages/schematics/angular/library/schema.json b/packages/schematics/angular/library/schema.json index 3db99c2d029d..2739b644b174 100644 --- a/packages/schematics/angular/library/schema.json +++ b/packages/schematics/angular/library/schema.json @@ -42,6 +42,11 @@ "type": "boolean", "default": false, "description": "When true, does not update \"tsconfig.json\" to add a path mapping for the new library. The path mapping is needed to use the library in an app, but can be disabled here to simplify development." + }, + "lintFix": { + "type": "boolean", + "default": false, + "description": "When true, applies lint fixes after generating the library." } }, "required": [] diff --git a/packages/schematics/angular/module/index.ts b/packages/schematics/angular/module/index.ts index eccb6c415668..07c1cfea2e03 100644 --- a/packages/schematics/angular/module/index.ts +++ b/packages/schematics/angular/module/index.ts @@ -24,6 +24,7 @@ import * as ts from 'typescript'; import { addImportToModule } from '../utility/ast-utils'; import { InsertChange } from '../utility/change'; import { buildRelativePath, findModuleFromOptions } from '../utility/find-module'; +import { applyLintFix } from '../utility/lint-fix'; import { parseName } from '../utility/parse-name'; import { buildDefaultPath, getProject } from '../utility/project'; import { Schema as ModuleOptions } from './schema'; @@ -102,6 +103,7 @@ export default function (options: ModuleOptions): Rule { addDeclarationToNgModule(options), mergeWith(templateSource), ])), + options.lintFix ? applyLintFix(options.path) : noop(), ]); }; } diff --git a/packages/schematics/angular/module/schema.json b/packages/schematics/angular/module/schema.json index f58e8299786d..5e5c1f608aac 100644 --- a/packages/schematics/angular/module/schema.json +++ b/packages/schematics/angular/module/schema.json @@ -53,6 +53,11 @@ "type": "string", "description": "The declaring NgModule.", "alias": "m" + }, + "lintFix": { + "type": "boolean", + "default": false, + "description": "When true, applies lint fixes after generating the module." } }, "required": [