From a5e4dffa56ae81b495e1966a3858522114c29cdf Mon Sep 17 00:00:00 2001 From: axiosleo Date: Fri, 3 Jan 2025 14:24:22 +0800 Subject: [PATCH] chore: migrate ESLint configuration from .eslintrc to eslint.config.mjs and update dependencies --- .eslintrc | 114 ---------------------------------------------- eslint.config.mjs | 97 +++++++++++++++++++++++++++++++++++++++ package.json | 5 +- 3 files changed, 101 insertions(+), 115 deletions(-) delete mode 100644 .eslintrc create mode 100644 eslint.config.mjs diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 8d1ee16..0000000 --- a/.eslintrc +++ /dev/null @@ -1,114 +0,0 @@ -{ - "rules": { - "indent": [ - 2, - 2, - { - "SwitchCase": 1 - } - ], - "quotes": [ - 2, - "single" - ], - "linebreak-style": [ - 2, - "unix" - ], - "semi": [ - 2, - "always" - ], - "strict": [ - 2, - "global" - ], - "curly": 2, - "eqeqeq": 2, - "no-eval": 2, - "guard-for-in": 2, - "no-caller": 2, - "no-else-return": 2, - "no-eq-null": 2, - "no-extend-native": 2, - "no-extra-bind": 2, - "no-floating-decimal": 2, - "no-implied-eval": 2, - "no-labels": 2, - "no-with": 2, - "no-loop-func": 2, - "no-native-reassign": 2, - "no-redeclare": [ - 2, - { - "builtinGlobals": true - } - ], - "no-delete-var": 2, - "no-shadow-restricted-names": 2, - "no-undef-init": 2, - "no-use-before-define": 2, - "no-unused-vars": [ - 2, - { - "args": "none" - } - ], - "no-undefined": 2, - "no-undef": 2, - "global-require": 0, - "no-console": 2, - "key-spacing": [ - 2, - { - "beforeColon": false, - "afterColon": true - } - ], - "eol-last": [ - 2, - "always" - ], - "no-inner-declarations": [ - 1 - ], - "no-case-declarations": [ - 1 - ], - "no-multiple-empty-lines": [ - 2, - { - "max": 1, - "maxBOF": 1 - } - ], - "space-in-parens": [ - 2, - "never" - ], - "no-multi-spaces": [ - 2, - { - "ignoreEOLComments": true - } - ] - }, - "env": { - "es6": true, - "node": true, - "browser": true - }, - "globals": { - "describe": true, - "it": true, - "before": true, - "after": true, - "beforeEach": true - }, - "parserOptions": { - "ecmaVersion": 2018, - "sourceType": "script", - "ecmaFeatures": {} - }, - "extends": "eslint:recommended" -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..b3e8137 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,97 @@ +import globals from "globals"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import js from "@eslint/js"; +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all +}); + +export default [...compat.extends("eslint:recommended"), { + languageOptions: { + globals: { + ...globals.node, + ...globals.browser, + describe: true, + it: true, + before: true, + after: true, + beforeEach: true, + }, + + ecmaVersion: 2018, + sourceType: "commonjs", + + parserOptions: { + ecmaFeatures: {}, + }, + }, + + rules: { + indent: [2, 2, { + SwitchCase: 1, + }], + + quotes: [2, "single"], + "linebreak-style": [2, "unix"], + semi: [2, "always"], + curly: 2, + eqeqeq: 2, + "no-eval": 2, + "guard-for-in": 2, + "no-caller": 2, + "no-else-return": 2, + "no-eq-null": 2, + "no-extend-native": 2, + "no-extra-bind": 2, + "no-floating-decimal": 2, + "no-implied-eval": 2, + "no-labels": 2, + "no-with": 2, + "no-loop-func": 2, + "no-native-reassign": 2, + + "no-redeclare": [2, { + builtinGlobals: true, + }], + + "no-delete-var": 2, + "no-shadow-restricted-names": 2, + "no-undef-init": 2, + "no-use-before-define": 2, + + "no-unused-vars": [2, { + args: "none", + }], + + "no-undefined": 2, + "no-undef": 2, + "global-require": 0, + "no-console": 2, + + "key-spacing": [2, { + beforeColon: false, + afterColon: true, + }], + + "eol-last": [2, "always"], + "no-inner-declarations": [1], + "no-case-declarations": [1], + + "no-multiple-empty-lines": [2, { + max: 1, + maxBOF: 1, + }], + + "space-in-parens": [2, "never"], + + "no-multi-spaces": [2, { + ignoreEOLComments: true, + }], + }, +}]; \ No newline at end of file diff --git a/package.json b/package.json index f8dc831..8e2af70 100644 --- a/package.json +++ b/package.json @@ -37,10 +37,13 @@ "validatorjs": "^3.22.1" }, "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.17.0", "@types/koa__multer": "^2.0.7", "@types/node": "^20.12.12", "chai": "^4.3.7", - "eslint": "^8.35", + "eslint": "^9.17.0", + "globals": "^15.14.0", "mocha": "^10.4.0", "nyc": "^15.1.0", "typescript": "^5.4.5"