From 15db5e8db3af3d999db0d7ab1c7cf92f9f1446e1 Mon Sep 17 00:00:00 2001 From: kailong321200875 <321200875@qq.com> Date: Thu, 18 Jul 2024 16:56:42 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0eslint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintignore | 8 -- .eslintrc.cjs | 71 ---------------- .husky/commit-msg | 2 +- .husky/pre-commit | 2 +- eslint.config.mjs | 81 +++++++++++++++++++ package.json | 67 +++++++-------- .../Descriptions/src/Descriptions.vue | 4 +- .../Table/src/components/ColumnSetting.vue | 2 +- .../UserInfo/src/components/LockPage.vue | 2 +- src/layout/Layout.vue | 5 +- src/utils/index.ts | 1 - src/views/Components/Table/CardTable.vue | 2 +- src/views/Components/Table/DefaultTable.vue | 2 +- .../Components/Table/TableImagePreview.vue | 2 +- .../Components/Table/TableVideoPreview.vue | 2 +- src/views/Dashboard/Workplace.vue | 2 +- src/views/Example/Page/ExampleAdd.vue | 1 - types/env.d.ts | 2 +- vite.config.ts | 2 + 19 files changed, 130 insertions(+), 130 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.cjs create mode 100644 eslint.config.mjs diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 1e85c0f..0000000 --- a/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -/build/ -/config/ -/dist/ -/*.js -/test/unit/coverage/ -/node_modules/* -/dist* -/src/main.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 8068163..0000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,71 +0,0 @@ -// @ts-check -const { defineConfig } = require('eslint-define-config') -module.exports = defineConfig({ - root: true, - env: { - browser: true, - node: true, - es6: true - }, - parser: 'vue-eslint-parser', - parserOptions: { - parser: '@typescript-eslint/parser', - ecmaVersion: 2020, - sourceType: 'module', - jsxPragma: 'React', - ecmaFeatures: { - jsx: true - } - }, - extends: [ - 'plugin:vue/vue3-recommended', - 'plugin:@typescript-eslint/recommended', - 'prettier', - 'plugin:prettier/recommended' - ], - rules: { - 'vue/no-setup-props-destructure': 'off', - 'vue/script-setup-uses-vars': 'error', - 'vue/no-reserved-component-names': 'off', - '@typescript-eslint/ban-ts-ignore': 'off', - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-var-requires': 'off', - '@typescript-eslint/no-empty-function': 'off', - 'vue/custom-event-name-casing': 'off', - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - '@typescript-eslint/ban-types': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-unused-vars': 'off', - 'no-unused-vars': 'off', - 'space-before-function-paren': 'off', - - 'vue/attributes-order': 'off', - 'vue/one-component-per-file': 'off', - 'vue/html-closing-bracket-newline': 'off', - 'vue/max-attributes-per-line': 'off', - 'vue/multiline-html-element-content-newline': 'off', - 'vue/singleline-html-element-content-newline': 'off', - 'vue/attribute-hyphenation': 'off', - 'vue/require-default-prop': 'off', - 'vue/require-explicit-emits': 'off', - 'vue/html-self-closing': [ - 'error', - { - html: { - void: 'always', - normal: 'never', - component: 'always' - }, - svg: 'always', - math: 'always' - } - ], - 'vue/multi-word-component-names': 'off', - 'vue/no-v-html': 'off', - 'vue/require-toggle-inside-transition': 'off' - } -}) diff --git a/.husky/commit-msg b/.husky/commit-msg index 10cb551..c00eb35 100755 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1,4 +1,4 @@ #!/bin/sh -. "$(dirname "$0")/_/husky.sh" +. "$(dirname "$0")/husky.sh" pnpm commitlint --edit "$1" diff --git a/.husky/pre-commit b/.husky/pre-commit index a6a2318..ae8ae36 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,5 +1,5 @@ #!/bin/sh -. "$(dirname "$0")/_/husky.sh" +. "$(dirname "$0")/husky.sh" [ -n "$CI" ] && exit 0 diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..6c8a81f --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,81 @@ +// 引入vue模版的eslint +import pluginVue from 'eslint-plugin-vue' +import eslint from '@eslint/js' +// ts-eslint解析器,使 eslint 可以解析 ts 语法 +import tseslint from 'typescript-eslint' +// vue文件解析器 +import vueParser from 'vue-eslint-parser' +import prettier from 'eslint-plugin-prettier' + +export default tseslint.config({ + // ignores: ['node_modules', 'prettier.config.cjs', 'dist*'], + files: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.vue'], + // tseslint.config添加了extends扁平函数,直接用。否则是eslint9.0版本是没有extends的 + extends: [ + eslint.configs.recommended, + ...tseslint.configs.recommended, + ...pluginVue.configs['flat/essential'] + ], + plugins: { + prettier + }, + languageOptions: { + parser: vueParser, // 使用vue解析器,这个可以识别vue文件 + parserOptions: { + parser: tseslint.parser, // 在vue文件上使用ts解析器 + sourceType: 'module', + ecmaVersion: 2020, + ecmaFeatures: { + jsx: true + } + } + }, + rules: { + 'prettier/prettier': 'error', + 'no-useless-escape': 0, + 'no-undef': 0, + 'vue/no-setup-props-destructure': 0, + 'vue/script-setup-uses-vars': 1, + 'vue/no-reserved-component-names': 0, + '@typescript-eslint/ban-ts-ignore': 0, + '@typescript-eslint/explicit-function-return-type': 0, + '@typescript-eslint/no-explicit-any': 0, + '@typescript-eslint/no-var-requires': 0, + '@typescript-eslint/no-empty-function': 0, + 'vue/custom-event-name-casing': 0, + 'no-use-before-define': 0, + '@typescript-eslint/no-use-before-define': 0, + '@typescript-eslint/ban-ts-comment': 0, + '@typescript-eslint/ban-types': 0, + '@typescript-eslint/no-non-null-assertion': 0, + '@typescript-eslint/explicit-module-boundary-types': 0, + '@typescript-eslint/no-unused-vars': 0, + 'no-unused-vars': 0, + 'space-before-function-paren': 0, + + 'vue/attributes-order': 0, + 'vue/one-component-per-file': 0, + 'vue/html-closing-bracket-newline': 0, + 'vue/max-attributes-per-line': 0, + 'vue/multiline-html-element-content-newline': 0, + 'vue/singleline-html-element-content-newline': 0, + 'vue/attribute-hyphenation': 0, + 'vue/require-default-prop': 0, + 'vue/require-explicit-emits': 0, + 'vue/html-self-closing': [ + 1, + { + html: { + void: 'always', + normal: 'never', + component: 'always' + }, + svg: 'always', + math: 'always' + } + ], + 'vue/multi-word-component-names': 0, + 'vue/no-v-html': 0, + 'vue/require-toggle-inside-transition': 0 + } +}) diff --git a/package.json b/package.json index c5d80bf..9bed0cf 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "npm:check": "pnpx npm-check-updates -u", "clean": "pnpx rimraf node_modules", "clean:cache": "pnpx rimraf node_modules/.cache", - "lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src", + "lint:eslint": "eslint . --fix \"src/**/*.{js,ts,tsx,vue,html}\"", "lint:format": "prettier --write --loglevel warn \"src/**/*.{js,ts,json,tsx,css,less,vue,html,md}\"", "lint:style": "stylelint --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/", "lint:lint-staged": "lint-staged -c ./.husky/lintstagedrc.cjs", @@ -30,7 +30,7 @@ "dependencies": { "@iconify/iconify": "^3.1.1", "@iconify/vue": "^4.1.2", - "@vueuse/core": "^10.10.0", + "@vueuse/core": "^10.11.0", "@wangeditor/editor": "^5.1.23", "@wangeditor/editor-for-vue": "^5.1.10", "@zxcvbn-ts/core": "^3.0.4", @@ -39,78 +39,79 @@ "cropperjs": "^1.6.2", "dayjs": "^1.11.11", "driver.js": "^1.3.1", - "echarts": "^5.5.0", + "echarts": "^5.5.1", "echarts-wordcloud": "^2.1.0", - "element-plus": "2.7.4", + "element-plus": "2.7.7", "lodash-es": "^4.17.21", "mitt": "^3.0.1", - "monaco-editor": "^0.49.0", + "monaco-editor": "^0.50.0", "nprogress": "^0.2.0", "pinia": "^2.1.7", "pinia-plugin-persistedstate": "^3.2.1", "qrcode": "^1.5.3", - "qs": "^6.12.1", + "qs": "^6.12.3", "url": "^0.11.3", - "vue": "3.4.27", - "vue-draggable-plus": "^0.5.0", + "vue": "3.4.32", + "vue-draggable-plus": "^0.5.2", "vue-i18n": "9.13.1", "vue-json-pretty": "^2.4.0", - "vue-router": "^4.3.2", - "vue-types": "^5.1.2", + "vue-router": "^4.4.0", + "vue-types": "^5.1.3", "xgplayer": "^3.0.18" }, "devDependencies": { "@commitlint/cli": "^19.3.0", "@commitlint/config-conventional": "^19.2.2", - "@iconify/json": "^2.2.215", + "@iconify/json": "^2.2.229", "@intlify/unplugin-vue-i18n": "^4.0.0", "@types/fs-extra": "^11.0.4", "@types/inquirer": "^9.0.7", "@types/lodash-es": "^4.17.12", "@types/mockjs": "^1.0.10", - "@types/node": "^20.13.0", + "@types/node": "^20.14.11", "@types/nprogress": "^0.2.3", "@types/qrcode": "^1.5.5", "@types/qs": "^6.9.15", "@types/sortablejs": "^1.15.8", - "@typescript-eslint/eslint-plugin": "^7.11.0", - "@typescript-eslint/parser": "^7.11.0", - "@unocss/transformer-variant-group": "^0.60.4", + "@typescript-eslint/eslint-plugin": "^7.16.1", + "@typescript-eslint/parser": "^7.16.1", + "@unocss/transformer-variant-group": "^0.61.5", "@vitejs/plugin-legacy": "^5.4.1", "@vitejs/plugin-vue": "^5.0.5", "@vitejs/plugin-vue-jsx": "^4.0.0", "autoprefixer": "^10.4.19", "chalk": "^5.3.0", "consola": "^3.2.3", - "eslint": "^8.57.0", + "eslint": "^9.7.0", "eslint-config-prettier": "^9.1.0", "eslint-define-config": "^2.1.0", - "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-vue": "^9.26.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-vue": "^9.27.0", "esno": "^4.7.0", "fs-extra": "^11.2.0", - "husky": "^9.0.11", - "inquirer": "^9.2.23", + "husky": "^9.1.0", + "inquirer": "^10.0.3", "less": "^4.2.0", - "lint-staged": "^15.2.5", + "lint-staged": "^15.2.7", "mockjs": "^1.1.0", "plop": "^4.0.1", - "postcss": "^8.4.38", + "postcss": "^8.4.39", "postcss-html": "^1.7.0", "postcss-less": "^6.0.0", - "prettier": "^3.2.5", - "rimraf": "^5.0.7", - "rollup": "^4.18.0", + "prettier": "^3.3.3", + "rimraf": "^6.0.1", + "rollup": "^4.18.1", "rollup-plugin-visualizer": "^5.12.0", - "stylelint": "^16.6.1", + "stylelint": "^16.7.0", "stylelint-config-html": "^1.1.0", - "stylelint-config-recommended": "^14.0.0", - "stylelint-config-standard": "^36.0.0", + "stylelint-config-recommended": "^14.0.1", + "stylelint-config-standard": "^36.0.1", "stylelint-order": "^6.0.4", - "terser": "^5.31.0", - "typescript": "5.4.5", - "unocss": "^0.60.4", - "vite": "5.2.12", + "terser": "^5.31.3", + "typescript": "5.5.3", + "typescript-eslint": "^7.16.1", + "unocss": "^0.61.5", + "vite": "5.3.4", "vite-plugin-ejs": "^1.7.0", "vite-plugin-eslint": "^1.8.1", "vite-plugin-mock": "2.9.6", @@ -119,7 +120,7 @@ "vite-plugin-style-import": "2.0.0", "vite-plugin-svg-icons": "^2.0.1", "vite-plugin-url-copy": "^1.1.4", - "vue-tsc": "^2.0.19" + "vue-tsc": "^2.0.26" }, "packageManager": "pnpm@8.1.0", "engines": { diff --git a/src/components/Descriptions/src/Descriptions.vue b/src/components/Descriptions/src/Descriptions.vue index 2c773b8..a4b222b 100644 --- a/src/components/Descriptions/src/Descriptions.vue +++ b/src/components/Descriptions/src/Descriptions.vue @@ -133,7 +133,7 @@ export default defineComponent({