import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import path, { join } from 'path' import { writeFileSync } from 'fs' function resolve(dir) { return path.join(__dirname, dir) } // https://vitejs.dev/config/ export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd()) return { base: `${env.VUE_APP_APP_NODE_ENV === 'production' ? env.VUE_APP_APP_BASE_URL : ''}/small-office-admin/`, server: { port: 10053 }, envPrefix: 'VUE_APP_', resolve: { alias: { '@': resolve('src') }, extensions: ['.js', '.vue', '.json', '.ts'] }, plugins: [ vue(), AutoImport({ resolvers: [ElementPlusResolver()] }), Components({ resolvers: [ElementPlusResolver()] }), (function() { let basePath = '' return { name: 'vite:micro-app', apply: 'build', configResolved(config) { basePath = `${config.base}${config.build.assetsDir}/` }, writeBundle(options, bundle) { for (const chunkName in bundle) { if (Object.prototype.hasOwnProperty.call(bundle, chunkName)) { const chunk = bundle[chunkName] if (chunk.fileName && chunk.fileName.endsWith('.js')) { chunk.code = chunk.code.replace(/(from|import\()(\s*['"])(\.\.?\/)/g, (all, $1, $2, $3) => { return all.replace($3, new URL($3, basePath)) }) const fullPath = join(options.dir, chunk.fileName) writeFileSync(fullPath, chunk.code) } } } } } })() ] } })