From aef5a020978a836ed9617eae81d6c108d70b035d Mon Sep 17 00:00:00 2001 From: LiuHao Date: Tue, 25 Feb 2025 13:30:57 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=8D=87=E7=BA=A7=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=EF=BC=8C=E4=BC=98=E5=8C=96eslint=E8=AF=AD?= =?UTF-8?q?=E6=B3=95=E4=BB=A5=E5=8F=8Ascss=E8=AF=AD=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eslint.config.js | 86 ---------------------------------- eslint.config.ts | 44 +++++++++++++++++ package.json | 39 ++++++++------- src/assets/styles/btn.scss | 2 +- src/assets/styles/index.scss | 18 +++---- src/assets/styles/ruoyi.scss | 2 + src/assets/styles/sidebar.scss | 2 + src/layout/index.vue | 8 ++-- vite.config.ts | 12 +++-- vite/plugins/index.ts | 3 ++ 10 files changed, 93 insertions(+), 123 deletions(-) delete mode 100644 eslint.config.js create mode 100644 eslint.config.ts diff --git a/eslint.config.js b/eslint.config.js deleted file mode 100644 index 8b67e9e..0000000 --- a/eslint.config.js +++ /dev/null @@ -1,86 +0,0 @@ -import globals from 'globals'; -import pluginJs from '@eslint/js'; -import tseslint from 'typescript-eslint'; -import pluginVue from 'eslint-plugin-vue'; -import { readFile } from 'node:fs/promises'; -import prettier from 'eslint-plugin-prettier'; - -/** - * https://blog.csdn.net/sayUonly/article/details/123482912 - * 自动导入的配置 - */ -const autoImportFile = new URL('./.eslintrc-auto-import.json', import.meta.url); -const autoImportGlobals = JSON.parse(await readFile(autoImportFile, 'utf8')); - -/** @type {import('eslint').Linter.Config[]} */ -export default [ - { - /** - * 不需要.eslintignore文件 而是在这里配置 - */ - ignores: [ - '*.sh', - 'node_modules', - '*.md', - '*.woff', - '*.ttf', - '.vscode', - '.idea', - 'dist', - '/public', - '/docs', - '.husky', - '.local', - '/bin', - '.eslintrc.cjs', - 'prettier.config.js', - 'src/assets', - 'tailwind.config.js' - ] - }, - { files: ['**/*.{js,mjs,cjs,ts,vue}'] }, - { - languageOptions: { - globals: globals.browser - } - }, - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - ...pluginVue.configs['flat/essential'], - { - files: ['**/*.vue'], - languageOptions: { - parserOptions: { - parser: tseslint.parser - } - } - }, - { - languageOptions: { - globals: { - // 自动导入的配置 undef - ...autoImportGlobals.globals, - DialogOption: 'readonly', - LayoutSetting: 'readonly' - } - }, - plugins: { prettier }, - rules: { - '@typescript-eslint/no-empty-function': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-unused-vars': 'off', - '@typescript-eslint/no-this-alias': 'off', - - // vue - 'vue/multi-word-component-names': 'off', - 'vue/valid-define-props': 'off', - 'vue/no-v-model-argument': 'off', - 'prefer-rest-params': 'off', - // prettier - 'prettier/prettier': 'error', - // 允许使用空Object类型 {} - '@typescript-eslint/no-empty-object-type': 'off', - '@typescript-eslint/no-unused-expressions': 'off' - } - } -]; diff --git a/eslint.config.ts b/eslint.config.ts new file mode 100644 index 0000000..50458d1 --- /dev/null +++ b/eslint.config.ts @@ -0,0 +1,44 @@ +import pluginVue from 'eslint-plugin-vue'; +import globals from 'globals'; +import prettier from 'eslint-plugin-prettier'; +import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'; +import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'; + +export default defineConfigWithVueTs( + { + name: 'app/files-to-lint', + files: ['**/*.{js,cjs,ts,mts,tsx,vue}'] + }, + + { + name: 'app/files-to-ignore', + ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**'] + }, + { + languageOptions: { + globals: globals.browser + } + }, + pluginVue.configs['flat/essential'], + vueTsConfigs.recommended, + skipFormatting, + { + plugins: { prettier }, + rules: { + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-this-alias': 'off', + // vue + 'vue/multi-word-component-names': 'off', + 'vue/valid-define-props': 'off', + 'vue/no-v-model-argument': 'off', + 'prefer-rest-params': 'off', + // prettier + 'prettier/prettier': 'error', + // 允许使用空Object类型 {} + '@typescript-eslint/no-empty-object-type': 'off', + '@typescript-eslint/no-unused-expressions': 'off' + } + } +); diff --git a/package.json b/package.json index faba6e7..26b156d 100644 --- a/package.json +++ b/package.json @@ -48,38 +48,37 @@ "vxe-table": "4.5.22" }, "devDependencies": { - "@eslint/js": "9.15.0", "@iconify/json": "2.2.276", "@types/crypto-js": "4.2.2", "@types/file-saver": "2.0.7", "@types/js-cookie": "3.0.6", - "@types/node": "18.18.2", "@types/nprogress": "0.2.3", - "@unocss/preset-attributify": "0.64.1", - "@unocss/preset-icons": "0.64.1", - "@unocss/preset-uno": "0.64.1", - "@vitejs/plugin-vue": "5.0.4", + "@unocss/preset-attributify": "66.0.0", + "@unocss/preset-icons": "66.0.0", + "@unocss/preset-uno": "66.0.0", + "@vitejs/plugin-vue": "5.2.1", "@vue/compiler-sfc": "3.4.23", - "autoprefixer": "10.4.18", - "eslint": "9.15.0", - "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-vue": "9.31.0", + "@vue/eslint-config-prettier": "10.2.0", + "@vue/eslint-config-typescript": "14.4.0", + "autoprefixer": "10.4.20", + "eslint": "9.21.0", + "eslint-plugin-prettier": "5.2.3", + "eslint-plugin-vue": "9.32.0", "fast-glob": "3.3.2", - "globals": "15.12.0", - "postcss": "8.4.36", - "prettier": "3.2.5", - "sass": "1.72.0", - "typescript": "5.7.2", - "typescript-eslint": "8.16.0", - "unocss": "0.64.1", + "globals": "16.0.0", + "prettier": "3.5.2", + "sass": "1.84.0", + "typescript": "5.7.3", + "unocss": "66.0.0", "unplugin-auto-import": "0.17.5", "unplugin-icons": "0.18.5", - "unplugin-vue-components": "0.26.0", + "unplugin-vue-components": "28.0.0", "unplugin-vue-setup-extend-plus": "1.0.1", "vite": "5.4.11", "vite-plugin-compression": "0.5.1", "vite-plugin-svg-icons": "2.0.1", - "vitest": "1.5.0", - "vue-tsc": "2.0.13" + "vite-plugin-vue-devtools": "7.7.1", + "vitest": "3.0.5", + "vue-tsc": "2.2.0" } } diff --git a/src/assets/styles/btn.scss b/src/assets/styles/btn.scss index a1ccd01..d614f2f 100644 --- a/src/assets/styles/btn.scss +++ b/src/assets/styles/btn.scss @@ -1,4 +1,4 @@ -@import './variables.module.scss'; +@use './variables.module.scss' as *; @mixin colorBtn($color) { background: $color; diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss index bdf9b03..fa0f9fe 100644 --- a/src/assets/styles/index.scss +++ b/src/assets/styles/index.scss @@ -1,12 +1,12 @@ -@import './variables.module.scss'; -@import './mixin.scss'; -@import './transition.scss'; -@import './element-ui.scss'; -@import './sidebar.scss'; -@import './btn.scss'; -@import './ruoyi.scss'; -@import 'animate.css'; -@import 'element-plus/dist/index.css'; +@use './variables.module.scss' as *; +@use './mixin.scss'; +@use './transition.scss'; +@use './element-ui.scss'; +@use './sidebar.scss'; +@use './btn.scss'; +@use './ruoyi.scss'; +@use 'animate.css'; +@use 'element-plus/dist/index.css'; body { height: 100%; diff --git a/src/assets/styles/ruoyi.scss b/src/assets/styles/ruoyi.scss index d2ecb24..3d90b8b 100644 --- a/src/assets/styles/ruoyi.scss +++ b/src/assets/styles/ruoyi.scss @@ -1,3 +1,5 @@ +@use './variables.module.scss' as *; + /** * 通用css样式布局处理 * Copyright (c) 2019 ruoyi diff --git a/src/assets/styles/sidebar.scss b/src/assets/styles/sidebar.scss index d85da55..f19abe4 100644 --- a/src/assets/styles/sidebar.scss +++ b/src/assets/styles/sidebar.scss @@ -1,3 +1,5 @@ +@use './variables.module.scss' as *; + #app { .main-container { height: 100%; diff --git a/src/layout/index.vue b/src/layout/index.vue index 207a470..128696c 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -68,7 +68,7 @@ onMounted(() => { }); onMounted(() => { - let protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'; + const protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'; initWebSocket(protocol + window.location.host + import.meta.env.VITE_APP_BASE_API + '/resource/websocket'); }); @@ -86,11 +86,11 @@ const setLayout = () => {