Angular多库项目ESLint全局共享配置方案咨询
解决Angular多库项目ESLint配置共享的方案
1. 利用ESLint配置继承(最推荐)
不用在angular.json里重复配置通用规则,直接借助ESLint本身的继承机制实现全局共享:
- 在项目根目录创建基础配置文件,比如
.eslintrc.base.json,把所有库通用的配置(如cache、通用规则、插件设置)放在这里:{ "root": true, "cache": true, "extends": [ "eslint:recommended", "plugin:@angular-eslint/recommended" ], "rules": { // 通用规则示例:"@angular-eslint/component-class-suffix": "error" } } - 每个库的
.gmslib-eslintrc.json修改为继承这个基础配置,只保留当前库特有的规则:{ "extends": "../../../.eslintrc.base.json", "rules": { // 当前库独有的规则示例 "@angular-eslint/component-selector": ["error", { "prefix": "gms", "style": "kebab-case", "type": "element" }] } } - 后续修改全局配置(比如调整缓存策略、通用规则),只需要更新根目录的基础文件,所有库会自动继承变更。
2. 统一angular.json中的ESLint配置路径
如果多数库可以共用同一个ESLint配置文件,直接修改angular.json中每个库的lint.options.eslintConfig指向根目录的共享文件:
"lint": { "builder": "@angular-eslint/builder:lint", "options": { "eslintConfig": "./.eslintrc.base.json", "lintFilePatterns": [ "projects/libs/google-sheet/src/**/*.ts", "projects/libs/google-sheet/src/**/*.html" ] } }
仅给有特殊需求的库单独指定专属ESLint配置文件即可。
3. 脚本批量维护angular.json配置
针对已有的大量库,可通过脚本批量更新angular.json中的通用lint配置:
- 示例Node.js脚本:
const fs = require('fs'); const angularJson = JSON.parse(fs.readFileSync('./angular.json', 'utf8')); // 遍历所有库项目,批量添加/修改通用配置 Object.keys(angularJson.projects).forEach(projectName => { const project = angularJson.projects[projectName]; if (project.projectType === 'library' && project.architect?.lint) { project.architect.lint.options.cache = true; } }); fs.writeFileSync('./angular.json', JSON.stringify(angularJson, null, 2)); - 运行脚本后,所有库的lint配置会自动同步通用选项,无需手动逐个修改。
4. 自定义Angular Schematics(长期维护场景)
如果频繁新增库项目,可自定义Angular Schematic,在生成新库时自动注入共享的ESLint配置:
- 编写本地Schematic,在创建库的流程中自动设置
lint的eslintConfig指向根基础配置,同时生成继承基础配置的库专属ESLint文件。
内容的提问来源于stack exchange,提问作者Nutan Gwari
相关产品推荐
相关产品推荐

