// vite.config.ts import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'file:///E:/code/vue3-h5-stock/node_modules/vite/dist/node/index.js' import vue from 'file:///E:/code/vue3-h5-stock/node_modules/@vitejs/plugin-vue/dist/index.mjs' import AutoImport from 'file:///E:/code/vue3-h5-stock/node_modules/unplugin-auto-import/dist/vite.js' import Components from 'file:///E:/code/vue3-h5-stock/node_modules/unplugin-vue-components/dist/vite.js' import { VantResolver } from 'file:///E:/code/vue3-h5-stock/node_modules/@vant/auto-import-resolver/dist/index.esm.mjs' import externalGlobals from 'file:///E:/code/vue3-h5-stock/node_modules/rollup-plugin-external-globals/index.js' import { createHtmlPlugin } from 'file:///E:/code/vue3-h5-stock/node_modules/vite-plugin-html/dist/index.mjs' import viteCompression from 'file:///E:/code/vue3-h5-stock/node_modules/vite-plugin-compression/dist/index.mjs' var __vite_injected_original_import_meta_url = 'file:///E:/code/vue3-h5-stock/vite.config.ts' function getDir() { const d = /* @__PURE__ */ new Date() const yy = d.getFullYear() const MM = d.getMonth() + 1 >= 10 ? d.getMonth() + 1 + '' : '0' + (d.getMonth() + 1) const DD = d.getDate() >= 10 ? d.getDate() + '' : '0' + d.getDate() const h = d.getHours() >= 10 ? d.getHours() + '' : '0' + d.getHours() const mm = d.getMinutes() >= 10 ? d.getMinutes() + '' : '0' + d.getMinutes() const version = yy + MM + DD + h + mm return version + '/static' } var dir = getDir() var cdn = { css: ['https://unpkg.com/vue3-pdf-app@1.0.3/dist/icons/main.css'], js: [ 'https://unpkg.com/vue@3.4.21/dist/vue.global.js', 'https://unpkg.com/pinia@2.1.7', 'https://unpkg.com/vue-router@4.3.0', 'https://unpkg.com/vant@4.9.1' ] } var externalGlobalsObj = { vue: 'Vue', pinia: 'Pinia', 'vue-router': 'VueRouter', vant: 'Vant' } var vite_config_default = defineConfig(({ mode }) => { console.log(mode) const isProduction = mode === 'production' return { plugins: [ vue(), AutoImport({ resolvers: [VantResolver()] }), Components({ resolvers: [VantResolver()] }), createHtmlPlugin({ inject: { data: { cdnCss: isProduction ? cdn.css : [], cdnJs: isProduction ? cdn.js : [] } } }), //在plugins配置数组里添加gzip插件 viteCompression({ verbose: true, disable: false, threshold: 10240, algorithm: 'gzip', ext: '.gz' }), { ...externalGlobals(externalGlobalsObj), enforce: 'post', apply: 'build' } ], resolve: { alias: { '@': fileURLToPath(new URL('./src', __vite_injected_original_import_meta_url)), '/img': fileURLToPath(new URL('./src/assets/img', __vite_injected_original_import_meta_url)) }, extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] }, build: { target: 'es2015', assetsDir: dir, minify: 'terser', // 必须开启:使用terserOptions才有效果 terserOptions: { compress: { keep_infinity: true, // 防止 Infinity 被压缩成 1/0,这可能会导致 Chrome 上的性能问题 drop_console: true, // 生产环境去除 console drop_debugger: true // 生产环境去除 debugger } }, chunkSizeWarningLimit: 2e3, // chunk 大小警告的限制(以 kbs 为单位) rollupOptions: { external: Object.keys(externalGlobalsObj), output: { chunkFileNames: `${dir}/js/chunk/[name]-[hash].js`, entryFileNames: `${dir}/js/entry/[name]-[hash].js`, assetFileNames: `${dir}/[ext]/[name]-[hash].[ext]` } } } /* css: { preprocessorOptions: { scss: { // ElementPlus自动导入定制化样式文件进行样式覆盖 @use "@/assets/styles/element.scss" as *; // 全局样式变量 @use "@/assets/styles/var.scss" as *;; additionalData: ` @use "@/assets/styles/var.scss" as *; `, } } } */ } }) export { vite_config_default as default } //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFxjb2RlXFxcXHZ1ZTMtaDUtc3RvY2tcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkU6XFxcXGNvZGVcXFxcdnVlMy1oNS1zdG9ja1xcXFx2aXRlLmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRTovY29kZS92dWUzLWg1LXN0b2NrL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgZmlsZVVSTFRvUGF0aCwgVVJMIH0gZnJvbSAnbm9kZTp1cmwnXHJcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gJ3ZpdGUnXHJcbmltcG9ydCB2dWUgZnJvbSAnQHZpdGVqcy9wbHVnaW4tdnVlJ1xyXG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tICd1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlJ1xyXG5pbXBvcnQgQ29tcG9uZW50cyBmcm9tICd1bnBsdWdpbi12dWUtY29tcG9uZW50cy92aXRlJ1xyXG5pbXBvcnQgeyBWYW50UmVzb2x2ZXIgfSBmcm9tICdAdmFudC9hdXRvLWltcG9ydC1yZXNvbHZlcidcclxuaW1wb3J0IGV4dGVybmFsR2xvYmFscyBmcm9tICdyb2xsdXAtcGx1Z2luLWV4dGVybmFsLWdsb2JhbHMnXHJcbmltcG9ydCB7IGNyZWF0ZUh0bWxQbHVnaW4gfSBmcm9tICd2aXRlLXBsdWdpbi1odG1sJ1xyXG4vLyBcdTY1ODdcdTRFRjZcdTUzOEJcdTdGMjlcclxuaW1wb3J0IHZpdGVDb21wcmVzc2lvbiBmcm9tICd2aXRlLXBsdWdpbi1jb21wcmVzc2lvbidcclxuZnVuY3Rpb24gZ2V0RGlyKCkge1xyXG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSgpXHJcbiAgY29uc3QgeXkgPSBkLmdldEZ1bGxZZWFyKClcclxuICBjb25zdCBNTSA9IGQuZ2V0TW9udGgoKSArIDEgPj0gMTAgPyBkLmdldE1vbnRoKCkgKyAxICsgJycgOiAnMCcgKyAoZC5nZXRNb250aCgpICsgMSlcclxuICBjb25zdCBERCA9IGQuZ2V0RGF0ZSgpID49IDEwID8gZC5nZXREYXRlKCkgKyAnJyA6ICcwJyArIGQuZ2V0RGF0ZSgpXHJcbiAgY29uc3QgaCA9IGQuZ2V0SG91cnMoKSA+PSAxMCA/IGQuZ2V0SG91cnMoKSArICcnIDogJzAnICsgZC5nZXRIb3VycygpXHJcbiAgY29uc3QgbW0gPSBkLmdldE1pbnV0ZXMoKSA+PSAxMCA/IGQuZ2V0TWludXRlcygpICsgJycgOiAnMCcgKyBkLmdldE1pbnV0ZXMoKVxyXG4gIGNvbnN0IHZlcnNpb24gPSB5eSArIE1NICsgREQgKyBoICsgbW1cclxuICByZXR1cm4gdmVyc2lvbiArICcvc3RhdGljJ1xyXG59XHJcbmNvbnN0IGRpciA9IGdldERpcigpXHJcblxyXG5jb25zdCBjZG4gPSB7XHJcbiAgY3NzOiBbJ2h0dHBzOi8vdW5wa2cuY29tL3Z1ZTMtcGRmLWFwcEAxLjAuMy9kaXN0L2ljb25zL21haW4uY3NzJ10sXHJcbiAganM6IFtcclxuICAgICdodHRwczovL3VucGtnLmNvbS92dWVAMy40LjIxL2Rpc3QvdnVlLmdsb2JhbC5qcycsXHJcbiAgICAnaHR0cHM6Ly91bnBrZy5jb20vcGluaWFAMi4xLjcnLFxyXG4gICAgJ2h0dHBzOi8vdW5wa2cuY29tL3BpbmlhLXBsdWdpbi1wZXJzaXN0ZWRzdGF0ZUAzLjIuMScsXHJcbiAgICAnaHR0cHM6Ly91bnBrZy5jb20vdnVlLXJvdXRlckA0LjMuMCcsXHJcbiAgICAnaHR0cHM6Ly91bnBrZy5jb20vYXhpb3NAMS43LjInLFxyXG4gICAgJ2h0dHBzOi8vdW5wa2cuY29tL3ZhbnRANC45LjEnLFxyXG4gICAgJ2h0dHBzOi8vdW5wa2cuY29tL21pdHRAMy4wLjEnLFxyXG4gICAgJ2h0dHBzOi8vdW5wa2cuY29tL21vbWVudEAyLjMwLjEnLFxyXG4gICAgJ2h0dHBzOi8vdW5wa2cuY29tL2NyeXB0by1qc0A0LjIuMCcsXHJcbiAgICAnaHR0cHM6Ly91bnBrZy5jb20veGxzeEAwLjE4LjUnLFxyXG4gICAgJ2h0dHBzOi8vdW5wa2cuY29tL3Z1ZTMtcGRmLWFwcEAxLjAuMydcclxuICBdXHJcbn1cclxuXHJcbmNvbnN0IGV4dGVybmFsR2xvYmFsc09iaiA9IHtcclxuICB2dWU6ICdWdWUnLFxyXG4gIHBpbmlhOiAnUGluaWEnLFxyXG4gICdwaW5pYS1wbHVnaW4tcGVyc2lzdGVkc3RhdGUnOiAnUGluaWFQbHVnaW5QZXJzaXN0ZWRzdGF0ZScsXHJcbiAgJ3Z1ZS1yb3V0ZXInOiAnVnVlUm91dGVyJyxcclxuICBheGlvczogJ0F4aW9zJyxcclxuICB2YW50OiAnVmFudCcsXHJcbiAgbWl0dDogJ01pdHQnLFxyXG4gIG1vbWVudDogJ01vbWVudCcsXHJcbiAgJ2NyeXB0by1qcyc6ICdDcnlwdG8tSnMnLFxyXG4gIHhsc3g6ICdYbHN4JyxcclxuICAndnVlMy1wZGYtYXBwJzogJ1Z1ZTMtUGRmLUFwcCdcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKCh7IG1vZGUgfSkgPT4ge1xyXG4gIGNvbnNvbGUubG9nKG1vZGUpXHJcbiAgY29uc3QgaXNQcm9kdWN0aW9uID0gbW9kZSA9PT0gJ3Byb2R1Y3Rpb24nXHJcbiAgcmV0dXJuIHtcclxuICAgIHBsdWdpbnM6IFtcclxuICAgICAgdnVlKCksXHJcbiAgICAgIEF1dG9JbXBvcnQoe1xyXG4gICAgICAgIHJlc29sdmVyczogW1ZhbnRSZXNvbHZlcigpXVxyXG4gICAgICB9KSxcclxuICAgICAgQ29tcG9uZW50cyh7XHJcbiAgICAgICAgcmVzb2x2ZXJzOiBbVmFudFJlc29sdmVyKCldXHJcbiAgICAgIH0pLFxyXG4gICAgICBjcmVhdGVIdG1sUGx1Z2luKHtcclxuICAgICAgICBpbmplY3Q6IHtcclxuICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgY2RuQ3NzOiBpc1Byb2R1Y3Rpb24gPyBjZG4uY3NzIDogW10sXHJcbiAgICAgICAgICAgIGNkbkpzOiBpc1Byb2R1Y3Rpb24gPyBjZG4uanMgOiBbXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIC8vXHU1NzI4cGx1Z2luc1x1OTE0RFx1N0Y2RVx1NjU3MFx1N0VDNFx1OTFDQ1x1NkRGQlx1NTJBMGd6aXBcdTYzRDJcdTRFRjZcclxuICAgICAgdml0ZUNvbXByZXNzaW9uKHtcclxuICAgICAgICB2ZXJib3NlOiB0cnVlLFxyXG4gICAgICAgIGRpc2FibGU6IGZhbHNlLFxyXG4gICAgICAgIHRocmVzaG9sZDogMTAyNDAsXHJcbiAgICAgICAgYWxnb3JpdGhtOiAnZ3ppcCcsXHJcbiAgICAgICAgZXh0OiAnLmd6J1xyXG4gICAgICB9KSxcclxuICAgICAge1xyXG4gICAgICAgIC4uLmV4dGVybmFsR2xvYmFscyhleHRlcm5hbEdsb2JhbHNPYmopLFxyXG4gICAgICAgIGVuZm9yY2U6ICdwb3N0JyxcclxuICAgICAgICBhcHBseTogJ2J1aWxkJ1xyXG4gICAgICB9XHJcbiAgICBdLFxyXG4gICAgcmVzb2x2ZToge1xyXG4gICAgICBhbGlhczoge1xyXG4gICAgICAgICdAJzogZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuL3NyYycsIGltcG9ydC5tZXRhLnVybCkpLFxyXG4gICAgICAgICcvaW1nJzogZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuL3NyYy9hc3NldHMvaW1nJywgaW1wb3J0Lm1ldGEudXJsKSlcclxuICAgICAgfSxcclxuICAgICAgZXh0ZW5zaW9uczogWycubWpzJywgJy5qcycsICcudHMnLCAnLmpzeCcsICcudHN4JywgJy5qc29uJywgJy52dWUnXVxyXG4gICAgfSxcclxuICAgIGJ1aWxkOiB7XHJcbiAgICAgIHRhcmdldDogJ2VzMjAxNScsXHJcbiAgICAgIGFzc2V0c0RpcjogZGlyLFxyXG4gICAgICBtaW5pZnk6ICd0ZXJzZXInLCAvLyBcdTVGQzVcdTk4N0JcdTVGMDBcdTU0MkZcdUZGMUFcdTRGN0ZcdTc1Mjh0ZXJzZXJPcHRpb25zXHU2MjREXHU2NzA5XHU2NTQ4XHU2NzlDXHJcbiAgICAgIHRlcnNlck9wdGlvbnM6IHtcclxuICAgICAgICBjb21wcmVzczoge1xyXG4gICAgICAgICAga2VlcF9pbmZpbml0eTogdHJ1ZSwgLy8gXHU5NjMyXHU2QjYyIEluZmluaXR5IFx1ODhBQlx1NTM4Qlx1N0YyOVx1NjIxMCAxLzBcdUZGMENcdThGRDlcdTUzRUZcdTgwRkRcdTRGMUFcdTVCRkNcdTgxRjQgQ2hyb21lIFx1NEUwQVx1NzY4NFx1NjAyN1x1ODBGRFx1OTVFRVx1OTg5OFxyXG4gICAgICAgICAgZHJvcF9jb25zb2xlOiB0cnVlLCAvLyBcdTc1MUZcdTRFQTdcdTczQUZcdTU4ODNcdTUzQkJcdTk2NjQgY29uc29sZVxyXG4gICAgICAgICAgZHJvcF9kZWJ1Z2dlcjogdHJ1ZSAvLyBcdTc1MUZcdTRFQTdcdTczQUZcdTU4ODNcdTUzQkJcdTk2NjQgZGVidWdnZXJcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGNodW5rU2l6ZVdhcm5pbmdMaW1pdDogMjAwMCwgLy8gY2h1bmsgXHU1OTI3XHU1QzBGXHU4QjY2XHU1NDRBXHU3Njg0XHU5NjUwXHU1MjM2XHVGRjA4XHU0RUU1IGticyBcdTRFM0FcdTUzNTVcdTRGNERcdUZGMDlcclxuICAgICAgcm9sbHVwT3B0aW9uczoge1xyXG4gICAgICAgIGV4dGVybmFsOiBPYmplY3Qua2V5cyhleHRlcm5hbEdsb2JhbHNPYmopLFxyXG4gICAgICAgIG91dHB1dDoge1xyXG4gICAgICAgICAgY2h1bmtGaWxlTmFtZXM6IGAke2Rpcn0vanMvY2h1bmsvW25hbWVdLVtoYXNoXS5qc2AsXHJcbiAgICAgICAgICBlbnRyeUZpbGVOYW1lczogYCR7ZGlyfS9qcy9lbnRyeS9bbmFtZV0tW2hhc2hdLmpzYCxcclxuICAgICAgICAgIGFzc2V0RmlsZU5hbWVzOiBgJHtkaXJ9L1tleHRdL1tuYW1lXS1baGFzaF0uW2V4dF1gXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvKiBjc3M6IHtcclxuICAgIHByZXByb2Nlc3Nvck9wdGlvbnM6IHtcclxuICAgICAgc2Nzczoge1xyXG4gICAgICAgIC8vIEVsZW1lbnRQbHVzXHU4MUVBXHU1MkE4XHU1QkZDXHU1MTY1XHU1QjlBXHU1MjM2XHU1MzE2XHU2ODM3XHU1RjBGXHU2NTg3XHU0RUY2XHU4RkRCXHU4ODRDXHU2ODM3XHU1RjBGXHU4OTg2XHU3NkQ2ICBAdXNlIFwiQC9hc3NldHMvc3R5bGVzL2VsZW1lbnQuc2Nzc1wiIGFzICo7XHJcbiAgICAgICAgLy8gXHU1MTY4XHU1QzQwXHU2ODM3XHU1RjBGXHU1M0Q4XHU5MUNGICBAdXNlIFwiQC9hc3NldHMvc3R5bGVzL3Zhci5zY3NzXCIgYXMgKjs7XHJcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IGBcclxuICAgICAgICAgIEB1c2UgXCJAL2Fzc2V0cy9zdHlsZXMvdmFyLnNjc3NcIiBhcyAqO1xyXG4gICAgICAgIGAsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9ICovXHJcbiAgfVxyXG59KVxyXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQXVQLFNBQVMsZUFBZSxXQUFXO0FBQzFSLFNBQVMsb0JBQW9CO0FBQzdCLE9BQU8sU0FBUztBQUNoQixPQUFPLGdCQUFnQjtBQUN2QixPQUFPLGdCQUFnQjtBQUN2QixTQUFTLG9CQUFvQjtBQUM3QixPQUFPLHFCQUFxQjtBQUM1QixTQUFTLHdCQUF3QjtBQUVqQyxPQUFPLHFCQUFxQjtBQVQySCxJQUFNLDJDQUEyQztBQVV4TSxTQUFTLFNBQVM7QUFDaEIsUUFBTSxJQUFJLG9CQUFJLEtBQUs7QUFDbkIsUUFBTSxLQUFLLEVBQUUsWUFBWTtBQUN6QixRQUFNLEtBQUssRUFBRSxTQUFTLElBQUksS0FBSyxLQUFLLEVBQUUsU0FBUyxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsU0FBUyxJQUFJO0FBQ2xGLFFBQU0sS0FBSyxFQUFF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