npm package: @startdt/eslint-config
Description: ESLint 可共享配置
Author: Vultur
Latest version: 2.7.3

# @startdt/eslint-config [![dependencies](https://img.shields.io/david/startdt/next-spec?path=packages%2Feslint-config)](https://david-dm.org/startdt/next-spec?path=packages/eslint-config)

[![open source](https://img.shields.io/badge/open%20source-❤-red)](https://next.startdt.com)
[![npm version](https://img.shields.io/npm/v/@startdt/eslint-config)](https://www.npmjs.com/package/@startdt/eslint-config)
[![node version](https://img.shields.io/node/v/@startdt/eslint-config)](https://nodejs.org/zh-cn/)
[![npm peer dependency version](https://img.shields.io/npm/dependency-version/@startdt/eslint-config/peer/eslint)](https://eslint.org)
[![npm download](https://img.shields.io/npm/dm/@startdt/eslint-config)](https://www.npmjs.com/package/@startdt/eslint-config)
[![npm license](https://img.shields.io/npm/l/@startdt/eslint-config)](https://www.npmjs.com/package/@startdt/eslint-config)

## 如何使用

```bash
npm i eslint @startdt/eslint-config --save-dev
```

> 提示：无需在项目中安装 `eslint-plugin-vue`、`eslint-config-*` 以及其他第三方依赖。

使用配置文件：

```js
// .eslintrc.js
module.exports = {
    extends: '@startdt/eslint-config',
    rules: {
        // 自定义规则
    },
};
```

或者项目属性：

```json
// package.json
"eslintConfig": {
    "extends": "@startdt/eslint-config",
    "rules": {}
}
```

## @typescript-eslint/eslint-plugin

如需在项目中支持 TypeScript 语法检测，请使用以下配置：

```js
// .eslintrc.js
module.exports = {
    extends: [
        '@startdt/eslint-config',
        '@startdt/eslint-config/typescript',
    ],
    rules: {
        // 自定义规则
    },
};
```

> 注意：请确保 `eslint --ext .js,.ts` 包含目标文件，因为 ESLint 默认仅检测 `.js` 文件。

## eslint-plugin-jest

默认文件匹配规则：

- 任何 `tests/unit` 中以 `.spec.(js|jsx|ts|tsx)` 结尾的文件
- 任何 `__tests__` 目录中的 `js(x)/ts(x)` 文件

```js
// .eslintrc.js
module.exports = {
    extends: [
        '@startdt/eslint-config',
        '@startdt/eslint-config/plugins/jest',
    ],
    rules: {
        // 自定义规则
    },
};
```

## eslint-plugin-mocha

默认文件匹配规则：

- 任何任何 `tests/unit` 中以 `.spec.(js|ts)` 结尾的文件

```js
// .eslintrc.js
module.exports = {
    extends: [
        '@startdt/eslint-config',
        '@startdt/eslint-config/plugins/mocha',
    ],
    rules: {
        // 自定义规则
    },
};
```

## eslint-plugin-cypress

默认文件匹配规则：

- 任何 `tests/e2e` 中以 `.spec.(js|ts)` 结尾的文件

```js
// .eslintrc.js
module.exports = {
    extends: [
        '@startdt/eslint-config',
        '@startdt/eslint-config/plugins/cypress',
    ],
    rules: {
        // 自定义规则
    },
};
```

## eslint-plugin-import

### eslint-import-resolver-lerna

导入解析配置：

```js
// .eslintrc.js
module.exports = {
    extends: [
        '@startdt/eslint-config',
        '@startdt/eslint-config/resolver/lerna',
    ],
    rules: {
        // 自定义规则
    },
};
```

或者手动配置：

```js
// .eslintrc.js
const path = require('path');

module.exports = {
    extends: '@startdt/eslint-config',
    settings: {
        'import/resolver': {
            lerna: {
                // 必须是 packages 目录的绝对路径，支持 string 或 array
                packages: path.resolve(__dirname, 'src/packages'),
            },
        },
    },
    rules: {
        // 自定义规则
    },
};
```

### eslint-import-resolver-webpack

导入解析配置：

```js
// .eslintrc.js
module.exports = {
    extends: [
        '@startdt/eslint-config',
        '@startdt/eslint-config/resolver/webpack',
    ],
    rules: {
        // 自定义规则
    },
};
```

或者手动配置：

```js
// .eslintrc.js
module.exports = {
    extends: '@startdt/eslint-config',
    settings: {
        'import/resolver': {
            webpack: {
                // 指向 webpack.config.js 配置文件，支持相对路径或绝对路径
                config: 'node_modules/@vue/cli-service/webpack.config.js',
            },
        },
    },
    rules: {
        // 自定义规则
    },
};
```

## 错误级别

1. 默认情况下，所有启用的规则都是 `"error"` 级别的严重程度；
2. 已启用规则，且支持 `--fix` 选项自动修复的规则都是 `"warn"` 级别的严重程度;
3. 未启用规则，默认将值设置为 `"off"` 进行显式配置，不产生任何错误信息；
4. 继承的规则，包括插件的规则都遵循以上错误级别；