From a73abc098fce11ac97e310584206ca4b0509ceb8 Mon Sep 17 00:00:00 2001 From: log1997 <2694233102@qq.com> Date: Fri, 5 Dec 2025 17:25:40 +0800 Subject: [PATCH] ci: actions --- .github/workflows/release.yml | 2 +- vite.config.ts | 243 +++++++++++++++++----------------- 2 files changed, 123 insertions(+), 122 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d510f69..1eb3fb4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,7 +38,7 @@ jobs: - name: Build for file protocol run: pnpm build:file - - name: Rename dist folders + - name: Prepare directories run: | mv dist dist-prod mv dist-prod/index.html dist-prod/404.html diff --git a/vite.config.ts b/vite.config.ts index a0e5b70..b873adc 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -19,132 +19,133 @@ const require = createRequire(import.meta.url) const process = require('node:process') export default defineConfig(({ mode }) => { - const env = loadEnv(mode, __dirname) - const chunkName = mode === 'prebuild' ? '[name]' : 'chunk' + const env = loadEnv(mode, __dirname) + const chunkName = mode === 'prebuild' ? '[name]' : 'chunk' - return { - base: mode === 'file' ? './' : '/log-lottery/', - plugins: [ - vue(), - mode === 'file' - ? legacy({ - additionalLegacyPolyfills: ['regenerator-runtime/runtime'], - }) - : null, - // vueDevTools(), - viteCompression({ - verbose: true, - disable: false, - threshold: 10240, - algorithm: 'gzip', - ext: '.gz', - }), - visualizer({ - emitFile: true, // 是否被触摸 - filename: 'test.html', // 生成分析网页文件名 - open: true, // 在默认用户代理中打开生成的文件 - gzipSize: true, // 从源代码中收集 gzip 大小并将其显示在图表中 - brotliSize: true, // 从源代码中收集 brotli 大小并将其显示在图表中 - }), + return { + base: mode === 'file' ? './' : '/log-lottery/', + plugins: [ + vue(), + mode === 'file' + ? legacy({ + additionalLegacyPolyfills: ['regenerator-runtime/runtime'], + }) + : null, + // vueDevTools(), + viteCompression({ + verbose: true, + disable: false, + threshold: 10240, + algorithm: 'gzip', + ext: '.gz', + }), + visualizer({ + emitFile: true, // 是否被触摸 + filename: 'test.html', // 生成分析网页文件名 + open: true, // 在默认用户代理中打开生成的文件 + gzipSize: true, // 从源代码中收集 gzip 大小并将其显示在图表中 + brotliSize: true, // 从源代码中收集 brotli 大小并将其显示在图表中 + }), - createSvgIconsPlugin({ - // 指定需要缓存的图标文件夹 - iconDirs: [path.resolve(process.cwd(), 'src/icons')], - // 指定symbolId格式 - symbolId: 'icon-[dir]-[name]', - }), - AutoImport({ - resolvers: [ - // 自动导入图标组件 - IconsResolver({ - prefix: 'Icon', - }), + createSvgIconsPlugin({ + // 指定需要缓存的图标文件夹 + iconDirs: [path.resolve(process.cwd(), 'src/icons')], + // 指定symbolId格式 + symbolId: 'icon-[dir]-[name]', + }), + AutoImport({ + resolvers: [ + // 自动导入图标组件 + IconsResolver({ + prefix: 'Icon', + }), + ], + dts: path.resolve(path.resolve(__dirname, 'src'), 'auto-imports.d.ts'), + }), + Components({ + resolvers: [ + // 自动注册图标组件 + IconsResolver({ + enabledCollections: ['ep'], + }), + ], + dts: path.resolve(path.resolve(__dirname, 'src'), 'components.d.ts'), + }), + Icons({ + autoInstall: true, + }), ], - dts: path.resolve(path.resolve(__dirname, 'src'), 'auto-imports.d.ts'), - }), - Components({ - resolvers: [ - // 自动注册图标组件 - IconsResolver({ - enabledCollections: ['ep'], - }), - ], - dts: path.resolve(path.resolve(__dirname, 'src'), 'components.d.ts'), - }), - Icons({ - autoInstall: true, - }), - ], - css: { - preprocessorOptions: { - scss: { - additionalData: '@use "@/style/global.scss" as *;', + css: { + preprocessorOptions: { + scss: { + additionalData: '@use "@/style/global.scss" as *;', + }, + }, + // postcss: { + // plugins: [ + // require('tailwindcss'), + // require('autoprefixer'), + // ] + // } }, - }, - // postcss: { - // plugins: [ - // require('tailwindcss'), - // require('autoprefixer'), - // ] - // } - }, - server: { - host: 'localhost', - port: 6719, - proxy: { - '/api': { - target: env.VITE_BASE_URL, - // 是否跨域 - changeOrigin: true, - // 路径重写 - rewrite: path => path.replace(/^\/api/, ''), + server: { + host: 'localhost', + port: 6719, + proxy: { + '/api': { + target: env.VITE_BASE_URL, + // 是否跨域 + changeOrigin: true, + // 路径重写 + rewrite: path => path.replace(/^\/api/, ''), + }, + }, }, - }, - }, - resolve: { - alias: { - '@': path.resolve(__dirname, './src'), - }, - }, - build: { - minify: 'terser', - terserOptions: { - compress: { - // 生产环境时移除console - drop_console: true, - drop_debugger: true, + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + }, }, - }, - // 关闭文件计算 - reportCompressedSize: false, - // 关闭生成map文件 可以达到缩小打包体积 - sourcemap: false, // 这个生产环境一定要关闭,不然打包的产物会很大 - rollupOptions: { - output: { - chunkFileNames: `js/${chunkName}-[hash].js`, // 引入文件名的名称 - entryFileNames: `js/${chunkName}-[hash].js`, // 包的入口文件名称 - assetFileNames: `[ext]/${chunkName}-[hash].[ext]`, // 资源文件像 字体,图片等 - manualChunks(id: any): string { - if (id.includes('node_modules')) { - return id - .toString() - .split('node_modules/')[1] - .split('/')[0] - .toString() - } - }, + build: { + outDir: mode === 'file' ? 'dist-file' : 'dist', + minify: 'terser', + terserOptions: { + compress: { + // 生产环境时移除console + drop_console: true, + drop_debugger: true, + }, + }, + // 关闭文件计算 + reportCompressedSize: false, + // 关闭生成map文件 可以达到缩小打包体积 + sourcemap: false, // 这个生产环境一定要关闭,不然打包的产物会很大 + rollupOptions: { + output: { + chunkFileNames: `js/${chunkName}-[hash].js`, // 引入文件名的名称 + entryFileNames: `js/${chunkName}-[hash].js`, // 包的入口文件名称 + assetFileNames: `[ext]/${chunkName}-[hash].[ext]`, // 资源文件像 字体,图片等 + manualChunks(id: any): string { + if (id.includes('node_modules')) { + return id + .toString() + .split('node_modules/')[1] + .split('/')[0] + .toString() + } + }, + }, + }, }, - }, - }, - // 使用这个必须在上面加/// 不然会有类型报错 - test: { - globals: true, // --> 0.8.1+ 请修改成globals - environment: 'jsdom', - // include: ['**/__tests__/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], - // passWithNoTests: true, - transformMode: { - web: [/\.[jt]sx$/], - }, - }, - } + // 使用这个必须在上面加/// 不然会有类型报错 + test: { + globals: true, // --> 0.8.1+ 请修改成globals + environment: 'jsdom', + // include: ['**/__tests__/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + // passWithNoTests: true, + transformMode: { + web: [/\.[jt]sx$/], + }, + }, + } })