【发布时间】:2021-12-09 11:30:11
【问题描述】:
我们最近迁移到一个包含许多 Angular 11+ 应用程序和库的新项目。我们为所有应用程序设置了angularCompilerOptions.strictTemplates: true。
问题是我们有一个 CI 管道来检查格式并运行 eslint,但是在我们进行生产构建之前,严格的模板检查错误不会被标记。因此,我们必须在 CI 中构建所有受影响的应用程序,如果我们更改库组件,则需要检查和构建所有应用程序。这可能需要几个小时。
eslint/tslint 有没有一种方法可以检查任何严格的模板错误,而无需每次都构建应用程序?
这是我们的 eslint.json:
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts"],
"extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"],
"parserOptions": { "project": ["apps/to-home/tsconfig.*?.json"] },
"rules": {
"@angular-eslint/directive-selector": ["error", { "type": "attribute", "prefix": "toh", "style": "camelCase" }],
"@angular-eslint/component-selector": ["error", { "type": "element", "prefix": "toh", "style": "kebab-case" }]
}
},
{ "files": ["*.html"], "extends": ["plugin:@nrwl/nx/angular-template"], "rules": {} }
]
}
和根 json:
{
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nrwl/nx"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"extends": [
"plugin:@angular-eslint/recommended",
"plugin:@angular-eslint/template/process-inline-templates",
"plugin:prettier/recommended"
],
"rules": {
"@typescript-eslint/no-unused-vars": [
"error",
{
"argsIgnorePattern": "^_"
}
],
"@typescript-eslint/no-empty-function": [
"error",
{
"allow": ["constructors"]
}
],
"@nrwl/nx/enforce-module-boundaries": [
"error",
{
"enforceBuildableLibDependency": true,
"allow": [
"@models/*",
"@apc-common/**",
"@apc-directives/**",
"@apc-helpers/**",
"@apc-modals/**",
"@apc-models/**",
"@apc-pipes/**",
"@apc-services/**",
"@apc-store/**",
"@apc-admin/**",
"@apc-help/**",
"@apc-home/**",
"@apc-materials/**",
"@apc-materials-deferral-review/**",
"@apc-parking/**",
"@apc-report/**",
"@apc-turnover/**",
"@apc-wall-display/**",
"@apc-workload/**"
],
"depConstraints": [
{
"sourceTag": "scope:server",
"onlyDependOnLibsWithTags": ["scope:server", "scope:models"]
},
{
"sourceTag": "scope:ui",
"onlyDependOnLibsWithTags": ["scope:ui", "scope:shared", "scope:models"]
},
{
"sourceTag": "scope:shared",
"onlyDependOnLibsWithTags": ["scope:shared", "scope:models"]
},
{
"sourceTag": "scope:models",
"onlyDependOnLibsWithTags": ["scope:models"]
}
]
}
],
"@typescript-eslint/no-this-alias": [
"error",
{
"allowDestructuring": true,
"allowedNames": ["self"]
}
]
}
},
{
"files": ["*.ts", "*.tsx"],
"extends": ["plugin:@nrwl/nx/typescript"],
"parserOptions": {
"project": "./tsconfig.json"
},
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"extends": ["plugin:@nrwl/nx/javascript"],
"rules": {}
}
]
}
【问题讨论】:
标签: angular eslint tslint nrwl-nx typescript-eslint