This capability handles creating new Angular applications and libraries with ESLint pre-configured, extending the standard Angular CLI generation schematics.
Creates a new Angular application with ESLint configuration already set up.
/**
* Create an Angular application with ESLint pre-configured
* @param options - Application generation options extending Angular's schema
* @returns Schematic rule that creates the application
*/
export default function (options: ApplicationSchema): Rule;
interface ApplicationSchema extends AngularApplicationSchema {
/** Whether to set parserOptions.project in the ESLint config */
setParserOptionsProject?: boolean;
}Usage Examples:
# Create an application with default ESLint setup
ng generate @angular-eslint/schematics:application my-app
# Create an application with parserOptions.project enabled
ng generate @angular-eslint/schematics:application my-app --setParserOptionsProject
# Using the alias
ng generate @angular-eslint/schematics:app my-appCreates a new Angular library with ESLint configuration already set up.
/**
* Generate a library project with ESLint pre-configured
* @param options - Library generation options extending Angular's schema
* @returns Schematic rule that creates the library
*/
export default function (options: LibrarySchema): Rule;
interface LibrarySchema extends AngularLibrarySchema {
/** Whether to set parserOptions.project in the ESLint config */
setParserOptionsProject?: boolean;
}Usage Examples:
# Create a library with default ESLint setup
ng generate @angular-eslint/schematics:library my-lib
# Create a library with parserOptions.project enabled
ng generate @angular-eslint/schematics:library my-lib --setParserOptionsProject
# Using the alias
ng generate @angular-eslint/schematics:lib my-libBoth application and library schematics automatically generate project-specific ESLint configurations that:
The setParserOptionsProject option controls whether the generated ESLint configuration includes:
parserOptions: {
project: ['tsconfig.json', 'tsconfig.app.json']
}This enables type-aware linting rules but can impact performance. It's recommended for libraries and applications that need strict type checking.
The generated projects include:
.eslintrc.json or eslint.config.js in the project rootlint target configured in angular.json{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts"],
"rules": {
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "app",
"style": "kebab-case"
}
]
}
},
{
"files": ["*.html"],
"rules": {}
}
]
}{
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": [
"projects/my-app/**/*.ts",
"projects/my-app/**/*.html"
]
}
}
}interface ApplicationSchema extends AngularApplicationSchema {
setParserOptionsProject?: boolean;
}
interface LibrarySchema extends AngularLibrarySchema {
setParserOptionsProject?: boolean;
}
type AngularApplicationSchema = import("@schematics/angular/application/schema").Schema;
type AngularLibrarySchema = import("@schematics/angular/library/schema").Schema;