主题
ESLint
JavaScript
安装依赖
bash
pnpm add -D eslint @eslint/js globals eslint-config-prettier配置文件
创建 eslint.config.js,内容如下:
js
import js from '@eslint/js'
import globals from 'globals'
import eslintConfigPrettier from 'eslint-config-prettier'
export default [
{
ignores: ['dist/**', 'coverage/**', 'node_modules/**'],
},
js.configs.recommended,
{
files: ['**/*.{js,mjs,cjs,jsx}'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
globals: {
...globals.browser,
...globals.node,
},
},
},
eslintConfigPrettier,
]脚本
在 package.json 中补充:
json
{
"scripts": {
"lint": "eslint .",
"lint:fix": "eslint . --fix"
}
}运行
bash
pnpm lint
pnpm lint:fixTypeScript
如果项目使用 TypeScript,再安装:
bash
pnpm add -D typescript typescript-eslint把 eslint.config.js 改成:
js
import js from '@eslint/js'
import globals from 'globals'
import tseslint from 'typescript-eslint'
import eslintConfigPrettier from 'eslint-config-prettier'
export default tseslint.config(
{
ignores: ['dist/**', 'coverage/**', 'node_modules/**'],
},
js.configs.recommended,
...tseslint.configs.recommended,
{
files: ['**/*.{ts,tsx}'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
globals: {
...globals.browser,
...globals.node,
},
},
},
eslintConfigPrettier,
)Vue
如果项目使用 Vue 3,再安装:
bash
pnpm add -D typescript typescript-eslint eslint-plugin-vue把 eslint.config.js 改成:
js
import js from '@eslint/js'
import globals from 'globals'
import pluginVue from 'eslint-plugin-vue'
import tseslint from 'typescript-eslint'
import eslintConfigPrettier from 'eslint-config-prettier'
export default tseslint.config(
{
ignores: ['dist/**', 'coverage/**', 'node_modules/**'],
},
js.configs.recommended,
...tseslint.configs.recommended,
...pluginVue.configs['flat/recommended'],
{
files: ['**/*.{ts,tsx,vue}'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
globals: {
...globals.browser,
...globals.node,
},
},
rules: {
'vue/multi-word-component-names': 'off',
},
},
eslintConfigPrettier,
)React
如果项目使用 React,再安装:
bash
pnpm add -D typescript typescript-eslint eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-react-refresh把 eslint.config.js 改成:
js
import js from '@eslint/js'
import globals from 'globals'
import tseslint from 'typescript-eslint'
import reactPlugin from 'eslint-plugin-react'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import eslintConfigPrettier from 'eslint-config-prettier'
export default tseslint.config(
{
ignores: ['dist/**', 'coverage/**', 'node_modules/**'],
},
js.configs.recommended,
...tseslint.configs.recommended,
{
files: ['**/*.{ts,tsx,jsx,js}'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
globals: {
...globals.browser,
...globals.node,
},
parserOptions: {
ecmaFeatures: {
jsx: true,
},
},
},
plugins: {
'react': reactPlugin,
'react-hooks': reactHooks,
'react-refresh': reactRefresh,
},
rules: {
...reactPlugin.configs.recommended.rules,
...reactHooks.configs.recommended.rules,
'react/react-in-jsx-scope': 'off',
'react-refresh/only-export-components': 'warn',
},
settings: {
react: {
version: 'detect',
},
},
},
eslintConfigPrettier,
)补充
忽略规则
忽略下一行:
js
// eslint-disable-next-line no-console
console.log('debug')忽略当前文件中的一段:
js
/* eslint-disable no-console */
console.log('debug')
/* eslint-enable no-console */