JSPM

  • Created
  • Published
  • Downloads 1329
  • Score
    100M100P100Q108384F

ESLint Shareable Config for Ali

Package Exports

  • eslint-config-ali
  • eslint-config-ali/es5
  • eslint-config-ali/es6
  • eslint-config-ali/rax
  • eslint-config-ali/react
  • eslint-config-ali/typescript
  • eslint-config-ali/typescript/rax
  • eslint-config-ali/typescript/react
  • eslint-config-ali/vue

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (eslint-config-ali) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

eslint-config-ali

简介

eslint-config-ali 是一个可分享 ESLint 配置包,支持 JavaScript、TypeScript、React、Vue、Node.js 等多种项目类型。

针对不同项目类型,本包提供了多套配置文件,它们分别依赖不同的 ESLint pluginparser

JavaScript 项目

项目类型 配置文件 依赖 plugins / configs 依赖 parser
一般项目 eslint-config-ali eslint-plugin-import@^2.19.1 babel-eslint@v10.1.0
React 项目 eslint-config-ali/react
eslint-config-ali/jsx-a11y(可选)
eslint-plugin-react@^7.17.0
eslint-plugin-react-hooks@^4.0.4
eslint-plugin-import@^2.19.1
eslint-plugin-jsx-a11y@^6.3.1(可选)
babel-eslint@v10.1.0
Rax 项目 eslint-config-ali/rax eslint-plugin-react@^7.17.0
eslint-plugin-react-hooks@^4.0.4
eslint-plugin-import@^2.19.1
babel-eslint@v10.1.0
Vue 项目 eslint-config-ali/vue eslint-plugin-vue@^6.0.1
eslint-plugin-import@^2.19.1
vue-eslint-parser@^7.0.0
Node.js 项目 eslint-config-ali/node eslint-config-egg@^9.0.0
eslint-plugin-import@^2.19.1
babel-eslint@v10.1.0
ES5 项目 eslint-config-ali/es5 ESLint 默认 parser

TypeScript 项目

项目类型 配置文件 依赖 plugins / configs 依赖 parser
一般项目 eslint-config-ali/typescript @typescript-eslint/eslint-plugin@^4.4.0
eslint-plugin-import@^2.19.1
@typescript-eslint/parser@^4.4.0
React 项目 eslint-config-ali/typescript/react
eslint-config-ali/jsx-a11y(可选)
@typescript-eslint/eslint-plugin@^4.4.0
eslint-plugin-react@^7.17.0
eslint-plugin-react-hooks@^4.0.4
eslint-plugin-import@^2.19.1
eslint-plugin-jsx-a11y@^6.3.1(可选)
@typescript-eslint/parser@^4.4.0
Rax 项目 eslint-config-ali/typescript/rax @typescript-eslint/eslint-plugin@^4.4.0
eslint-plugin-react@^7.17.0
eslint-plugin-react-hooks@^4.0.4
eslint-plugin-import@^2.19.1
@typescript-eslint/parser@^4.4.0
Vue 项目 eslint-config-ali/typescript/vue @typescript-eslint/eslint-plugin@^4.4.0
eslint-plugin-vue@^6.0.1
eslint-plugin-import@^2.19.1
vue-eslint-parser@^7.0.0
@typescript-eslint/parser@^4.4.0
Node.js 项目 eslint-config-ali/typescript/node @typescript-eslint/eslint-plugin@^4.4.0
eslint-plugin-import@^2.19.1
@typescript-eslint/parser@^4.4.0

用法

项目接入本包有 2 种方式:

  • CLI 接入:可以使用本包配套的 CLI 工具 方便地接入
  • 手动接入:也可以根据自己的项目类型从上表中找到对应的配置文件,在 ESLint 配置extends,并安装对应的 pluginparser 依赖

以下将详细介绍下针对各项目类型的手动接入方法:

未使用 React、Vue、Node.js 的项目(JavaScript)

针对未使用 React 和 Vue 的 JavaScript 项目,语言版本支持到 ES2019(ES10),使用 ESLint 原生规则和 eslint-plugin-import 规则。这是本包的默认配置。

安装

npm install --save-dev eslint-config-ali eslint@^6.8.0 babel-eslint@^10.1.0 eslint-plugin-import@^2.19.1

使用

{
  "extends": "eslint-config-ali"
}

React 项目(JavaScript)

针对 JS React 项目,继承了默认配置,并启用了 eslint-plugin-reacteslint-plugin-react-hooks 的规则。

安装

npm install --save-dev eslint-config-ali eslint@^6.8.0 babel-eslint@^10.1.0 eslint-plugin-import@^2.19.1 eslint-plugin-react@^7.17.0 eslint-plugin-react-hooks@^4.0.4

使用

{
  "extends": "eslint-config-ali/react"
}

a11y 支持

本包也提供了 JSX a11y 的检查规则,但没有在 React 规则包中默认引入,你可以按如下步骤手动启用:

安装 eslint-plugin-jsx-a11y 插件:

npm install --save-dev eslint-plugin-jsx-a11y

在配置中引入 eslint-config-ali/jsx-a11y

{
  "extends": ["eslint-config-ali/react", "eslint-config-ali/jsx-a11y"]
}

Rax 项目(JavaScript)

针对 JS Rax 项目,Rax 工程和 React 工程语法相近,继承了默认配置,并启用了 eslint-plugin-reacteslint-plugin-react-hooks 的规则。

安装

npm install --save-dev eslint-config-ali eslint@^6.8.0 babel-eslint@^10.1.0 eslint-plugin-import@^2.19.1 eslint-plugin-react@^7.17.0 eslint-plugin-react-hooks@^4.0.4

使用

{
  "extends": "eslint-config-ali/rax"
}

Vue 项目(JavaScript)

针对 JS Vue 的项目,继承了默认配置,并启用了 eslint-plugin-vue 插件的规则,使用 vue-eslint-parser 作为 parser。

安装

npm install --save-dev eslint-config-ali eslint@^6.8.0 vue-eslint-parser@^7.0.0 babel-eslint@^10.1.0 eslint-plugin-import@^2.19.1 eslint-plugin-vue@^6.0.1

使用

{
  "extends": "eslint-config-ali/vue"
}

Node.js 项目(JavaScript)

针对未使用 React 和 Vue 的 JavaScript(Node) 项目,语言版本支持到 ES2019(ES10),使用 ESLint 原生规则和 eslint-plugin-import 规则。这是本包的默认配置。

安装

npm install --save-dev eslint-config-ali eslint@^6.8.0 babel-eslint@^10.1.0 eslint-plugin-import@^2.19.1 eslint-config-egg@^9.0.0

使用

{
  "extends": "eslint-config-ali/node"
}

ES5 项目(JavaScript)

针对仍在使用 ES5 及之前版本 JS 的老项目,使用 ESLint 原生规则。

安装

npm install --save-dev eslint-config-ali eslint@^6.8.0

使用

{
  "extends": "eslint-config-ali/es5"
}

未使用 React、Vue、Node.js 的项目(TypeScript)

针对未使用 React 和 Vue 的 TypeScript 项目,继承了默认配置,并启用了 @typescript-eslint/eslint-plugin 插件的规则,使用 @typescript-eslint/parser 作为 parser。

安装

npm install --save-dev eslint-config-ali eslint@^6.8.0 eslint-plugin-import@^2.19.1 @typescript-eslint/eslint-plugin@^4.4.0 @typescript-eslint/parser@^4.4.0

此外需保证项目已安装 typescript 依赖。

使用

{
  "extends": "eslint-config-ali/typescript"
}

可在配置文件中覆盖 parserOptions.project 来指定不同的 TS 项目配置文件,默认使用 ./tsconfig.json,例如:

{
  "extends": "eslint-config-ali/typescript",
  "parserOptions": {
    "project": "./tsconfig.eslint.json"
  }
}

React 项目(TypeScript)

针对 TS React 项目,继承了 JS React 的配置,并启用了 @typescript-eslint/eslint-plugin 插件的规则,使用 @typescript-eslint/parser 作为 parser。

安装

npm install --save-dev eslint-config-ali eslint@^6.8.0 eslint-plugin-import@^2.19.1 eslint-plugin-react@^7.17.0 eslint-plugin-react-hooks@^4.0.4 @typescript-eslint/eslint-plugin@^4.4.0 @typescript-eslint/parser@^4.4.0

此外需保证项目已安装 typescript 依赖。

使用

{
  "extends": "eslint-config-ali/typescript/react"
}

a11y 支持

本包也提供了 JSX a11y 的检查规则,但没有在 TS React 规则包中默认引入,你可以按如下步骤手动启用:

安装 eslint-plugin-jsx-a11y 插件:

npm install --save-dev eslint-plugin-jsx-a11y

在配置中引入 eslint-config-ali/jsx-a11y

{
  "extends": ["eslint-config-ali/typescript/react", "eslint-config-ali/jsx-a11y"]
}

Rax 项目(TypeScript)

针对 TS Rax 项目,继承了 JS Rax 的配置,语法与 React 相近,并启用了 @typescript-eslint/eslint-plugin 插件的规则,使用 @typescript-eslint/parser 作为 parser。

安装

npm install --save-dev eslint-config-ali eslint@^6.8.0 eslint-plugin-import@^2.19.1 eslint-plugin-react@^7.17.0 eslint-plugin-react-hooks@^4.0.4 @typescript-eslint/eslint-plugin@^4.4.0 @typescript-eslint/parser@^4.4.0

此外需保证项目已安装 typescript 依赖。

使用

{
  "extends": "eslint-config-ali/typescript/rax"
}

Vue 项目(TypeScript)

针对 TS Vue 项目,继承了 JS Vue 的配置,并启用了 @typescript-eslint/eslint-plugin 插件的规则,使用 @typescript-eslint/parser 作为 parser。

安装

npm install --save-dev eslint-config-ali eslint@^6.8.0 eslint-plugin-import@^2.19.1 eslint-plugin-vue@^6.0.1 vue-eslint-parser@^7.0.0 @typescript-eslint/eslint-plugin@^4.4.0 @typescript-eslint/parser@^4.4.0

此外需保证项目已安装 typescript 依赖。

使用

{
  "extends": "eslint-config-ali/typescript/vue"
}

Node.js 项目(TypeScript)

针对未使用 React 和 Vue 的 TypeScript(Node) 项目,继承了默认配置,并启用了 @typescript-eslint/eslint-plugin 插件的规则,使用 @typescript-eslint/parser 作为 parser。

安装

npm install --save-dev eslint-config-ali eslint@^6.8.0 eslint-plugin-import@^2.19.1 @typescript-eslint/eslint-plugin@^4.4.0 @typescript-eslint/parser@^4.4.0 eslint-config-egg@^9.0.0

此外需保证项目已安装 typescript 依赖。

使用

{
  "extends": "eslint-config-ali/typescript/node"
}

配合 Prettier 一起使用

如果你的项目在使用 Prettier 进行代码格式化,本包的一些规则可能会跟 Prettier 格式化结果有冲突,例如 indent 这条规则。为了避免冲突,你需要手动安装 eslint-config-prettiereslint-plugin-prettier

npm install --save-dev eslint-config-prettier eslint-plugin-prettier

并修改 eslintrc 的 extends 如下(以 TS React 项目为例):

{
  "extends": [
    "eslint-config-ali/typescript/react",
    "prettier/@typescript-eslint",
    "plugin:prettier/recommended"
  ]
}

或者如果你不希望 ESLint 再管格式问题,直接调用 Prettier 进行格式化的话,可修改 eslintrc 的 extends 如下:

{
  "extends": [
    "eslint-config-ali/typescript/react",
    "prettier/@typescript-eslint"
  ]
}

了解更多请阅读 Prettier - Integrating with Linters

将风格问题降级

为了保证一致的编码风格,本包中大量风格相关的规则被设为了 error 级别,以引起开发者的足够重视。如果你觉得风格问题不足以是 error 级别(有些用户根据 ESLint error 进行流程卡点),本包还提供了一套名为 'essential' 的配置文件,这套配置将所有风格问题降级为 warn 级别,仅将必要问题报告为 error,引用方式为在相应配置的 eslint-config-ali 后面加上 /essential,如对 JS React 项目为 eslint-config-ali/essential/react、对 TS Vue 项目为 eslint-config-ali/essential/typescript/vue

Learn more

  • 如果你对 ESLint 还不熟悉,可以阅读官网的 Getting Started 快速入门。
  • 了解如何在继承本包的基础上对项目 ESLint 进行个性化配置,可参考官网的 Configuring ESLint。下面简介下 ESLint 配置中的几个常用字段:
    • extends: 继承一组规则集。"extends": "eslint-config-ali", 表示继承本包定义的规则配置。
    • rules: 配置规则,这里定义的规则会覆盖 extends 的规则。如果觉得本包开启的某条规则过于严格,你可以暂时在这里将其关闭。
    • parser: 设置 ESLint 的解析器。ESLint 使用 espree 作为默认的解析器,可以通过这个参数指定其他的解析器。比如指定为 babel-eslint,以解析 Babel 支持但 ESLint 默认解析器不支持的语法。
    • globals: 指定代码中可能用到的全局变量,以免全局变量被 no-undef 规则报错。
    • env: 指定代码的运行环境,每个环境预定义了一组对应的全局变量,本包已开启的环境有 browser、node、jquery、es6 及几个测试框架的环境。
  • 了解如何为 IDE 配置 ESLint,可参考官网的 Integrations
  • 了解常用的 ESLint 命令,如 --fix--ext-f,可参考官网的 Command Line Interface