eslint-config-ali-banma
v15.0.9
Published
ESLint Shareable Config for Alibaba F2E Guidelines For Banma BU
Downloads
14
Maintainers
Readme
eslint-config-ali
eslint-config-ali 是《阿里巴巴前端规约》配套的 ESLint 可共享配置,提供了多套配置文件以支持 JavaScript、TypeScript、React、Vue、Node.js 等多种项目类型。
eslint-config-ali-banma
eslint-config-ali-banma 是基于eslint-config-ali修改部分编码规则的ESLint可共享配置,适用于阿里巴巴集团斑马AliOS项目,规则参考语雀文档: https://aliyuque.antfin.com/dgsi2f/wai0v0/vpa4kcz4sfcfswnu?singleDoc# 《JavaScript编码规范(草案)》 https://aliyuque.antfin.com/dgsi2f/wai0v0/crqzn3ntzrxl5c2o?singleDoc# 《TypeScript编码规范(草案)》
bmlint 接入(推荐)
npx bmlint
手动接入
npm install --save-dev eslint
npm install --save-dev eslint-config-ali-banma
项目配置
基础 JavaScript 项目
针对未使用 React 或 Vue 的原生 JavaScript 项目,使用 ESLint 原生规则和 eslint-plugin-import 规则,使用 @babel/eslint-parser 作为 parser,是本包的默认配置。
ESLint 配置:
{
"extends": ["eslint-config-ali-banma"]
}
基础 TypeScript 项目
针对未使用 React 或 Vue 的 TypeScript 项目,继承了默认配置,并启用了 @typescript-eslint/eslint-plugin 插件的规则,使用 @typescript-eslint/parser 作为 parser。
ESLint 配置:
{
"extends": ["eslint-config-ali-banma/typescript"]
}
注意:需要保证项目安装了 typescript@5
依赖,同时根目录下有 tsconfig.json
文件。
Node.js JavaScript 项目
针对 Node.js 项目,规则由 ESLint 原生规则和 eslint-plugin-node 提供。
ESLint 配置:
{
"extends": ["eslint-config-ali-banma/node"]
}
Node.js TypeScript 项目
针对未使用 React 和 Vue 的 TypeScript(Node) 项目,适用于绝大多数AliOS TypeScript项目,继承了 JS Node.js 配置,并启用了 @typescript-eslint/eslint-plugin 插件的规则,使用 @typescript-eslint/parser 作为 parser。
ESLint 配置:
{
"extends": ["eslint-config-ali-banma/typescript/node"]
}
React JavaScript 项目
针对 JS React 项目,继承了默认配置,并启用了 eslint-plugin-react 和 eslint-plugin-react-hooks 的规则。
ESLint 配置:
{
"extends": ["eslint-config-ali-banma/react"]
}
如果需要无障碍能力:
{
"extends": ["eslint-config-ali-banma/react", "eslint-config-ali/jsx-a11y"]
}
TypeScript + React 项目
针对 TS React 项目,继承了 JS React 的配置,并启用了 @typescript-eslint/eslint-plugin 插件的规则,使用 @typescript-eslint/parser 作为 parser。
ESLint 配置:
{
"extends": ["eslint-config-ali-banma/typescript/react"]
}
如果需要无障碍能力:
{
"extends": [
"eslint-config-ali-banma/typescript/react",
"eslint-config-ali-banma/jsx-a11y"
]
}
Vue JavaScript 项目
针对 JS Vue 的项目,继承了默认配置,并启用了 eslint-plugin-vue 插件的规则,使用 vue-eslint-parser 作为 parser。
ESLint 配置:
{
"extends": ["eslint-config-ali-banma/vue"]
}
Vue TypeScript
针对 TS Vue 项目,继承了 JS Vue 的配置,并启用了 @typescript-eslint/eslint-plugin 插件的规则,使用 @typescript-eslint/parser 作为 parser。
ESLint 配置:
{
"extends": ["eslint-config-ali-banma/typescript/vue"]
}
Egg.js JavaScript 项目
针对 Egg.js 项目,继承了 Node.js 配置和 egg-config-egg 的 node 规则。
ESLint 配置:
{
"extends": ["eslint-config-ali-banma/egg"]
}
Egg.js TypeScript 项目
针对未使用 React 和 Vue 的 TypeScript(Node) 项目,继承了 JS Node.js 配置,并启用了 @typescript-eslint/eslint-plugin 插件的规则,使用 @typescript-eslint/parser 作为 parser。
ESLint 配置:
{
"extends": ["eslint-config-ali-banma/typescript/egg"]
}
配合 Prettier 使用
如果你的项目使用 Prettier 进行代码格式化,本包的一些规则可能会跟 Prettier 格式化结果有冲突,例如这条规则。为了避免冲突,你需要手动安装 eslint-config-prettier 和 eslint-plugin-prettier:
安装依赖:
npm install --save-dev eslint-config-prettier eslint-plugin-prettier
ESLint 配置:
{
"extends": ["eslint-config-ali-banma/typescript/react", "plugin:prettier/recommended"]
}
了解更多
- 如果你对 ESLint 还不熟悉,可以阅读官网的 Getting Started 快速入门。
- 了解如何为 IDE 配置 ESLint,可以参考官网的 Integrations。
- 了解如何在继承本包的基础上对项目 ESLint 进行个性化配置,可参考官网的 Configuring ESLint。下面简介下 ESLint 配置中的几个常用字段:
extends
: 继承一组规则集。"extends": "eslint-config-ali-banma",
表示继承本包定义的规则配置。rules
: 配置规则,这里定义的规则会覆盖extends
的规则。如果觉得本包开启的某条规则过于严格,你可以暂时在这里将其关闭。parser
: 设置 ESLint 的解析器。ESLint 使用 espree 作为默认的解析器,可以通过这个参数指定其他的解析器。比如指定为 @babel/eslint-parser,以解析 Babel 支持但 ESLint 默认解析器不支持的语法(本包不同配置文件使用的解析器可在简介表格中的「依赖 parser」一列查看)。globals
: 指定代码中可能用到的全局变量,以免全局变量被 no-undef 规则报错。env
: 指定代码的运行环境,每个环境预定义了一组对应的全局变量,本包已开启的环境有 browser、node、jquery、es6 及几个测试框架的环境。
- 了解常用的 ESLint 命令,如
--fix
、--ext
,可参考官网的 Command Line Interface。