@ebarooni / angular-eslint-config
为Angular项目共享ESLint配置。
安装
npm i -D @ebarooni/angular-eslint-config @eslint/js angular-eslint eslint eslint-config-prettier typescript typescript-eslint
兼容性
支持的版本:angular-eslint 22、ESLint 10、@eslint/js 10、ESLint -config-prettier 10、TypeScript 6.0和TypeScript - ESLint 8.58。
node . js中 .nvmrc 24.22.2。这个 engines 字段允许Node.js ^22.22.3, ^24.15.0,或者 >=26.0.0.
使用1。Angular 18-21 / TypeScript
设置
创建 eslint.config.mjs 在Angular项目中:
import defineEslintConfig from "@ebarooni/angular-eslint-config";
export default defineEslintConfig({
tsconfigRootDir: import.meta.dirname,
});
defineEslintConfig() 没有论据也可以。该配置使用TypeScript项目服务。配置忽略 .angular/, dist/ 和 coverage/.
在options对象之后传递额外的配置对象。
使用
npx eslint
npx eslint --fix
测试项目
这个 test 目录是一个小的Angular 22应用。它使用这个包。
npm run test 在根目录下构建这个包,安装那个应用,并在那里运行ESLint。它不调用下面的脚本。 npm run lint 在 test 运行相同的ESLint命令。结果是一样的。
在检测测试应用之前构建这个包。包条目是 dist. dist 不在git中。
一个老 dist 从1.0的原因 Config (unnamed): Unexpected key "tsconfigRootDir". 1.0函数将options对象放入ESLint配置中。这个对象有 tsconfigRootDir 在顶层。运行 npm run build. 2.0文件将密钥放在下面 languageOptions.parserOptions. npm run test 检查位置。
npm ci
npm run build
cd test
npm ci
npm run lint
npm run format:check
npm run format
npm run format 写漂亮的变化。 npm run format:check 只检查它们。根包有相同的 format 和 format:check 脚本。
迁移到2.0.0
2.0.0使用ESLint 10。它不支持ESLint 9。
2.0.0改变了调用。
古老的电话:
import defineEslintConfig from "@ebarooni/angular-eslint-config";
export default defineEslintConfig([
{
languageOptions: {
parserOptions: {
project: ["tsconfig.eslint.json"],
tsconfigRootDir: import.meta.dirname,
},
},
},
]);
新电话:
import defineEslintConfig from "@ebarooni/angular-eslint-config";
export default defineEslintConfig({
tsconfigRootDir: import.meta.dirname,
});
旧的数组调用抛出。传递一个options对象。
删除 tsconfig.eslint.json 当没有其他文件使用它时。
2.0.0也支持这些规则。它们报告现有代码中的错误:
@angular-eslint/prefer-on-push-component-change-detection与allowExplicitOnPush: false. 一个显式的ChangeDetectionStrategy.OnPush是一个错误。规则可以消除它。@angular-eslint/no-uncalled-signals@angular-eslint/prefer-signals@angular-eslint/prefer-output-readonly@angular-eslint/template/prefer-ngsrc@angular-eslint/template/no-duplicate-attributes@angular-eslint/template/button-has-type
此包仅为ESM。它没有发布CommonJS版本。使用 import. require() 返回模块对象,而不是函数。