import { resolve } from 'node:path' import UnoCSS from 'unocss/vite' import { defineConfig, loadEnv } from 'vite' import legacy from '@vitejs/plugin-legacy' import vue2 from '@vitejs/plugin-vue2' import { ViteEjsPlugin } from 'vite-plugin-ejs' import { viteExternalsPlugin } from 'vite-plugin-externals' import { legacyQiankun } from 'vite-plugin-legacy-qiankun' // https://github.com/iamxiyang/vite-plugin-html-redirect import ViteHtmlRedirect from 'vite-plugin-html-redirect' import { useServerProxy } from '../../configs/proxy/dev-proxy' const env = loadEnv(process.env.NODE_ENV, process.cwd()) const baseCDN = { css: [ 'https://cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/style.min.css' ], js: [ 'https://cdn-common.jianyu360.com/cdn/lib/echarts/4.8.0/echarts.min.js', 'https://cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/index.min.js', 'https://cdn-common.jianyu360.com/cdn/lib/pdfjs-dist/2.1.266/build/pdf.min.js', 'https://cdn-common.jianyu360.com/cdn/lib/pdfjs-dist/2.1.266/web/pdf_viewer.js' // 'https://cdn-common.jianyu360.com/cdn/lib/jquery/3.5.1/jquery.min.js', // 标签上需要添加ignore ] } const prodCDN = { js: [ 'https://cdn-common.jianyu360.com/cdn/lib/vue/2.7.16/vue.min.js', 'https://cdn-common.jianyu360.com/cdn/lib/vue-router/3.6.5/vue-router.min.js', 'https://cdn-common.jianyu360.com/cdn/lib/vuex/3.6.2/vuex.min.js', 'https://cdn-common.jianyu360.com/cdn/lib/axios/1.6.7/axios.min.js', 'https://cdn-common.jianyu360.com/cdn/lib/lodash/4.17.21/lodash.min.js', 'https://cdn-common.jianyu360.com/cdn/lib/dayjs/1.11.4/dayjs.min.js', 'https://cdn-common.jianyu360.com/cdn/lib/js-cookie/2.2.1/js.cookie.min.js' ] } function getCDN() { const isDev = process.env.NODE_ENV === 'development' if (isDev) { return baseCDN } else { const allCDN = Object.assign({}, baseCDN) allCDN.css = allCDN.css.concat(prodCDN.css || []) allCDN.js = allCDN.js.concat(prodCDN.js || []) return allCDN } } function getExternals() { const isDev = process.env.NODE_ENV === 'development' if (isDev) { return {} } return { 'vue': 'Vue', 'vue-router': 'VueRouter', 'vuex': 'Vuex', 'axios': 'axios', 'lodash': '_', 'echarts': 'echarts', 'v-charts': 'VeIndex', // 解决画像visualMap不显示问题 // echarts: 'echarts', // moment: 'moment', 'jquery': '$' } } export default defineConfig({ base: env.VITE_APP_BASE_PUBLIC, build: { outDir: '../../dist/page_big_pc', emptyOutDir: true, rollupOptions: { external: [ '/common-module/chart-module/js/chart-common.js', '/qr?url=/stl/wxSubscrbePage' ], output: { manualChunks(id) { if (id.includes('node_modules/element-ui')) { return 'ElementUI' } } } } }, optimizeDeps: { exclude: ['/common-module/chart-module/js/chart-common.js'] }, plugins: [ UnoCSS(), vue2(), ViteEjsPlugin({ cdn: getCDN(), assets: { version: Date.now() } }), ViteHtmlRedirect(), // eslintPlugin(), viteExternalsPlugin(getExternals()), legacy({ targets: ['ie >= 11'], additionalLegacyPolyfills: ['regenerator-runtime/runtime'] }), legacyQiankun({ name: 'bigMemberSubApp', devSandbox: false }) // vitePluginRequire() ], resolve: { alias: [ // { // find: /^~/, // replacement: "", // }, { find: '~@', replacement: resolve(__dirname, 'src') }, { find: '@', replacement: resolve(__dirname, 'src') } ], extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] }, css: { preprocessorOptions: { scss: { silenceDeprecations: ['legacy-js-api', 'import'], // 静默所有相关警告 additionalData: ` @import "@/assets/style/_mixin.scss"; @import "@/assets/style/_variables.scss"; ` } } }, server: { port: 8081, proxy: useServerProxy('web'), host: '0.0.0.0' } })