diff --git a/package.json b/package.json index 86ceffcfac533f8b02499182517637c5b0559299..1dac5c7ce681fbac8c79adf98193e65bbb2ced49 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "$schema": "https://json.schemastore.org/tsconfig", + "$schema": "https://json.schemastore.org/package", "name": "ruoyi-vue-plus", "version": "5.3.0", "description": "RuoYi-Vue-Plus多租户管理系统", @@ -52,6 +52,7 @@ "@types/crypto-js": "4.2.2", "@types/file-saver": "2.0.7", "@types/js-cookie": "3.0.6", + "@types/node": "^22.13.4", "@types/nprogress": "0.2.3", "@unocss/preset-attributify": "66.0.0", "@unocss/preset-icons": "66.0.0", @@ -67,7 +68,7 @@ "globals": "16.0.0", "prettier": "3.5.2", "sass": "1.84.0", - "typescript": "5.7.3", + "typescript": "~5.7.3", "unocss": "66.0.0", "unplugin-auto-import": "0.17.5", "unplugin-icons": "0.18.5", @@ -78,10 +79,16 @@ "vite-plugin-svg-icons-ng": "1.0.2", "vite-plugin-vue-devtools": "7.7.1", "vitest": "3.0.5", - "vue-tsc": "2.2.0" + "vue-tsc": "^2.2.2" }, "engines": { "node": ">=18.18.0", "npm": ">=8.9.0" - } + }, + "browserslist": [ + "Chrome >= 87", + "Edge >= 88", + "Safari >= 14", + "Firefox >= 78" + ] } diff --git a/tsconfig.json b/tsconfig.json index 6315891fb5d671311f3a313e2d2bf42aa77cf715..142d50977db64ca2775478e190084b39adf99b53 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,31 +1,35 @@ { + "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { - "target": "esnext", - "module": "esnext", - // "useDefineForClassFields": true, - "moduleResolution": "bundler", + "baseUrl": ".", + // https://vite.dev/config/build-options.html#build-target + "target": "ES2020", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["ESNext", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + // This setting lets you specify a file for storing incremental compilation information as a part of composite projects which enables faster building of larger TypeScript codebases. + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo", "strict": true, + "allowJs": true, "jsx": "preserve", - "strictNullChecks": false, "sourceMap": true, "resolveJsonModule": true, "esModuleInterop": true, - "strictFunctionTypes": false, - "lib": ["esnext", "dom"], - "noImplicitAny": false, - "baseUrl": ".", - "allowJs": true, - "experimentalDecorators": true, + "noEmit": true, "paths": { - "@/*": ["src/*"] + "@/*": ["./src/*"] }, - "types": ["vite/client"], - "skipLibCheck": true, - "removeComments": true, - // 允许默认导入 - "allowSyntheticDefaultImports": true, - "forceConsistentCasingInFileNames": true + "types": ["node", "vite/client"], + // 自定义配置 + "noImplicitAny": false, // 禁用 隐式的any错误 + "removeComments": true, // 移除 ts注释 + "experimentalDecorators": true, // 启用实验性的装饰器支持 + "strictFunctionTypes": false, // 禁用严格函数类型检查 + "strictNullChecks": false, // 禁用严格的空值检查 + "allowSyntheticDefaultImports": true, // 允许默认导入 + "forceConsistentCasingInFileNames": true // 强制在文件名中使用一致的大小写 }, - "include": ["src/**/*.ts", "src/**/*.vue", "src/types/**/*.d.ts", "vite.config.ts"], - "exclude": ["node_modules", "dist", "**/*.js", "**/*.md", "src/**/*.md"] + "include": ["src/**/.ts", "src/**/*.vue", "vite.config.ts", "vitest.config.ts", "eslint.config.ts"], + "exclude": ["node_modules", "dist", "src/**/__tests__/*"] } diff --git a/vite.config.ts b/vite.config.ts index b29dd407a1fb5d6eed8f2e919b1a0a379aa3e7fa..58ca5f21a9e906d60f39cebb6fba060016f20cf7 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -12,7 +12,6 @@ export default defineConfig(({ mode, command }) => { base: env.VITE_APP_CONTEXT_PATH, resolve: { alias: { - '~': path.resolve(__dirname, './'), '@': path.resolve(__dirname, './src') }, extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] @@ -43,16 +42,12 @@ export default defineConfig(({ mode, command }) => { postcss: { plugins: [ // 浏览器兼容性 - autoprefixer({ - overrideBrowserslist: ['Android 4.1', 'iOS 7.1', 'Chrome > 31', 'ff > 31', 'ie >= 8'] - }), + autoprefixer(), { postcssPlugin: 'internal:charset-removal', AtRule: { charset: (atRule) => { - if (atRule.name === 'charset') { - atRule.remove(); - } + atRule.remove(); } } }