UNPKG

create-iking-admin

Version:

金合技术中台脚手架

121 lines (119 loc) 3.82 kB
/* * @Author : wfl * @LastEditors : wfl * @description : * @updateInfo : * @Date : 2024-02-29 14:41:18 * @LastEditTime : 2024-03-14 11:08:43 */ import fs from 'node:fs' import path from 'node:path' import process from 'node:process' import { defineConfig, loadEnv } from 'vite' import dayjs from 'dayjs' import { replaceIconfont } from './vite/plugins/replace-iconfont' import logger from './vite/plugins/logger' import pkg from './package.json' import createVitePlugins from './vite/plugins' // https://vitejs.dev/config/ export default async ({ mode, command }) => { replaceIconfont() const env = loadEnv(mode, './env') // 全局 scss 资源 const scssResources = [] fs.readdirSync('main-app/assets/styles/resources').forEach((dirname) => { if (fs.statSync(`main-app/assets/styles/resources/${dirname}`).isFile()) { scssResources.push(`@use "main-app/assets/styles/resources/${dirname}" as *;`) } }) return defineConfig({ base: './', envDir: './env', // 开发服务器选项 https://cn.vitejs.dev/config/#server-options server: { open: false, port: 9000, host: true, proxy: { '/api': { target: env.VITE_APP_PROXY_URL, changeOrigin: command === 'serve' && env.VITE_OPEN_PROXY === 'true', rewrite: path => path.replace(/^\/api/, ''), }, '/ws': { target: env.VITE_APP_SSOCKET_PROXY_URL, changeOrigin: command === 'serve' && env.VITE_OPEN_PROXY === 'true', rewrite: path => path.replace(/^\/ws/, ''), }, '/jmreport': { target: 'http://localhost:8080', changeOrigin: true, }, }, }, customLogger: logger, // 构建选项 https://cn.vitejs.dev/config/#server-fsserve-root build: { outDir: mode === 'production' ? 'dist' : `dist-${mode}`, sourcemap: env.VITE_BUILD_SOURCEMAP === 'true', // 启用/禁用 gzip 压缩大小报告;压缩大型输出文件可能会很慢,禁用该功能会提高项目的构建性能 reportCompressedSize: false, chunkSizeWarningLimit: 1000, rollupOptions: { output: { chunkFileNames: 'ik-[name]-[hash].js', // intro: '/* eslint-disable no-eval */', manualChunks: { 'monaco-editor': ['monaco-editor'], 'tinymce': ['tinymce'], 'element-plus': ['element-plus'], 'iking-form': ['iking-form'], 'mo-form': ['mo-form'], }, }, }, }, define: { __SYSTEM_INFO__: JSON.stringify({ pkg: { version: pkg.version, dependencies: pkg.dependencies, devDependencies: pkg.devDependencies, }, lastBuildTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), }), }, plugins: createVitePlugins(env, command === 'build'), resolve: { alias: { // MainApp '@main': path.resolve(__dirname, 'main-app'), // MicroApp '@micro': path.resolve(__dirname, 'micro-app'), '#': path.resolve(__dirname, 'types'), // type interface '@t': path.resolve(__dirname, 'types'), // global // assets '@as': path.resolve(__dirname, 'main-app/assets'), // enum '@e': path.resolve(__dirname, 'main-app/enums'), // api '@api': path.resolve(__dirname, 'main-app/api'), // api/modules '@apim': path.resolve(__dirname, 'main-app/api/modules'), // theme '@theme': path.resolve(__dirname, 'themes'), // vite '@sys': path.resolve(__dirname, 'vite'), }, }, css: { preprocessorOptions: { scss: { additionalData: scssResources.join(''), }, }, }, }) }