Egg.js 项目的合理 ESLint 配置文件模板

Egg.js 项目的合理 ESLint 配置文件模板

安装依赖

bash 复制代码
npm install eslint @babel/eslint-parser eslint-plugin-import eslint-plugin-promise eslint-plugin-node --save-dev
  • extends : 扩展了 eslint-config-egg 以及其他一些常用的插件配置。

  • parser : 使用 @babel/eslint-parser 作为解析器,支持最新的 JavaScript 语法。

  • parserOptions: 设置了解析器选项,包括 ECMAScript 版本和模块类型。

  • env: 设置了 Node.js 和 ES6 环境。

  • settings : 配置了导入解析器,支持 .js.ts 文件。

  • rules: 添加了一些常用的 ESLint 规则,包括对控制台日志、未使用的变量、导入检查、Promise 检查和 Node.js 特定的规则

.eslintrc

javascript 复制代码
{
    "extends": [
      "eslint-config-egg",
      "plugin:import/errors",
      "plugin:import/warnings",
      "plugin:import/typescript",
      "plugin:promise/recommended",
      "plugin:node/recommended"
    ],
    "parser": "@babel/eslint-parser",
    "parserOptions": {
      "ecmaVersion": 2020,
      "sourceType": "module",
      "requireConfigFile": false
    },
    "env": {
      "node": true,
      "es6": true
    },
    "settings": {
      "import/resolver": {
        "node": {
          "extensions": [".js", ".ts"]
        }
      }
    },
    "rules": {
      "no-console": "warn",
      "no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
      "import/no-unresolved": "error",
      "import/named": "error",
      "import/namespace": "error",
      "import/default": "error",
      "import/export": "error",
      "import/extensions": ["error", "always", { "js": "never", "ts": "never" }],
      "import/newline-after-import": "error",
      "import/no-extraneous-dependencies": ["error", { "devDependencies": true }],
      "promise/always-return": "error",
      "promise/no-return-wrap": "error",
      "promise/param-names": "error",
      "promise/catch-or-return": "error",
      "node/no-missing-import": "error",
      "node/no-unpublished-require": "error",
      "node/no-unsupported-features/es-syntax": "error",
      "node/process-exit-as-throw": "error",
      "node/shebang": "error"
    }
  }

但如果同时使用prettier与eslint冲突 可以再补上安装

bash 复制代码
npm install eslint-config-prettier eslint-plugin-prettier --save-dev

这些工具可以帮助你关闭 ESLint 中与 Prettier 冲突的规则,并将 Prettier 作为 ESLint 的规则之一运行

最终配置为

bash 复制代码
{
    "extends": [
      "eslint-config-egg",
      "plugin:import/errors",
      "plugin:import/warnings",
      "plugin:import/typescript",
      "plugin:promise/recommended",
      "plugin:node/recommended",
      "plugin:prettier/recommended", // 添加 Prettier 插件
      "prettier" // 确保 Prettier 覆盖其他规则
    ],
    "parser": "@babel/eslint-parser",
    "parserOptions": {
      "ecmaVersion": 2020,
      "sourceType": "module",
      "requireConfigFile": false
    },
    "env": {
      "node": true,
      "es6": true
    },
    "settings": {
      "import/resolver": {
        "node": {
          "extensions": [".js", ".ts"]
        }
      }
    },
    "rules": {
      "no-console": "warn",
      "no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
      "import/no-unresolved": "error",
      "import/named": "error",
      "import/namespace": "error",
      "import/default": "error",
      "import/export": "error",
      "import/extensions": ["error", "always", { "js": "never", "ts": "never" }],
      "import/newline-after-import": "error",
      "import/no-extraneous-dependencies": ["error", { "devDependencies": true }],
      "promise/always-return": "error",
      "promise/no-return-wrap": "error",
      "promise/param-names": "error",
      "promise/catch-or-return": "error",
      "node/no-missing-import": "error",
      "node/no-unpublished-require": "error",
      "node/no-unsupported-features/es-syntax": "error",
      "node/process-exit-as-throw": "error",
      "node/shebang": "error",
      "no-trailing-spaces": 1, // 禁用 no-trailing-spaces 规则
      "prettier/prettier": ["error", { "singleQuote": true, "semi": false }] // 配置 Prettier 规则
    }
  }
相关推荐
神奇的程序员9 小时前
我的软件冲进苹果商店下载榜前 50 了
前端
阳光是sunny9 小时前
别再被 worktree 绕晕了!AI 编程时代你必须掌握的 Git 隔离神器
前端·人工智能·后端
万少11 小时前
万少的博客 - 技术分享与解决方案
前端·javascript·后端
尘世中一位迷途小书童13 小时前
用 Cesium 撸了一个森林火情监控大屏,弧线、粒子、发光效果都齐了
前端·javascript
IT_陈寒14 小时前
垃圾回收器选错了,我的Java服务内存炸了
前端·人工智能·后端
月光下的丝瓜14 小时前
Flutter 国内安装指南
前端·flutter
先吃饱再说15 小时前
JavaScript中`this` 的“千层套路”:从默认绑定到箭头函数的五种指向
javascript
玄星啊15 小时前
AI 编程的第 30 天,我怀念古法 Coding 了
前端·ai编程
Jolyne_15 小时前
Angular基础速通
前端·angular.js
foxire15 小时前
基于nodejs实现服务端内核引擎
javascript