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$/],
+ },
+ },
+ }
})