在微信小程序开发者工具使用 ESLint 的方法:
package.json
文件,那在根目录执行 npm init -y
创建它;npm init @eslint/config
,ESLint 会让你回答几个问题,请根据实际情况回答问题,我的回答可参考下图,ESLint 会根据你的回答生成一个配置文件,并安装相关的 npm 依赖;npm uninstall eslint
删除最新版本,然后 npm i -D eslint@7
安装 ESLint 的 7.x.x 版本;npm i -D typescript
,这是 @typescript-eslint
的要求;globals
配置信息,如果回答问题时你选择了 Typescript,那最后的配置信息应该是这样的://.eslintrc.js
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
},
//Typescript 项目需要增加 @typescript-eslint 这个插件提供的 @typescript-eslint/recommended 规则
extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
overrides: [],
//ESLint 的默认 parser 是 Espree,Typescript 项目需要改为 @typescript-eslint/parser
parser: "@typescript-eslint/parser",
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
},
plugins: ["@typescript-eslint"],
globals: {
wx: true,
App: true,
Page: true,
getCurrentPages: true,
getApp: true,
Component: true,
Behavior: true,
requirePlugin: true,
requireMiniProgram: true,
},
rules: {},
};
npx eslint .
,看看 ESLint 能否正确工作,如果不可以,则可能是配置文件哪里出错了,请根据错误提示排错;test.js
或 test.ts
文件,输入 const a = 1
,把鼠标放在 a
,如果看到下面这种提示,则说明配置成功。注意两点:
globals
我就是从模版复制过来的,但额外增加了 Behavior: true
,模版没有针对 Typescript 的规则,所以不建议使用模版的配置,建议通过 npm init @eslint/config
根据实际情况生成新的配置;如果你还使用 prettier 格式化代码,为了避免 ESLint 的规则和 prettier 的规则产生冲突,建议再安装 eslint-config-prettier
,它会关闭 ESLint 中那些和 prettier 冲突的规则,即如果有冲突,以 prettier 为准。eslint-config-prettier
除了会关闭有冲突的 ESLint 核心规则外,还会关闭有冲突的 @typescript-eslint/eslint-plugin
等第三方规则。
以下是使用 eslint-config-prettier
后的 ESLint 配置信息,关键是要把 eslint-config-prettier
放在 extends
数组最后的位置,eslint-config-
是 ESLint sharable config 都会使用的前缀,实际使用时需要删除这个前缀,即把 prettier
添加到 extends
配置项中,其他不变。
//.eslintrc.js
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
},
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"prettier",
],
overrides: [],
parser: "@typescript-eslint/parser",
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
},
plugins: ["@typescript-eslint"],
globals: {
wx: true,
App: true,
Page: true,
getCurrentPages: true,
getApp: true,
Component: true,
Behavior: true,
requirePlugin: true,
requireMiniProgram: true,
},
rules: {},
};
相关阅读: