low-code/apps/platform/vite.config.ts
2025-03-06 10:28:14 +08:00

137 lines
3.7 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { resolve } from 'node:path';
import { loadEnv } from 'vite';
import vueJsx from '@vitejs/plugin-vue-jsx';
import mkcert from 'vite-plugin-mkcert';
import vue from '@vitejs/plugin-vue';
import checker from 'vite-plugin-checker';
import Components from 'unplugin-vue-components/vite';
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';
import Unocss from 'unocss/vite';
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';
import dayjs from 'dayjs';
import Http2Proxy from '@sy/vite-plugin-http2-proxy';
import Inspector from 'vite-plugin-vue-inspector';
import pkg from './package.json';
import type { UserConfig, ConfigEnv } from 'vite';
// import { DEV_SERVER_PORT } from '@sy/low-code-shared/dist/constants';
// console.log(DEV_SERVER_PORT);
const __APP_INFO__ = {
pkg,
lastBuildTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
};
// https://vitejs.dev/config/
export default ({ command, mode }: ConfigEnv): UserConfig => {
console.log('mode', mode);
// 环境变量
const env = loadEnv(mode, process.cwd(), ['VITE_', 'VTJ_', 'SY_', 'Y_CODE_']);
console.log('env', env);
const isDev = command === 'serve';
return {
define: {
__APP_INFO__: JSON.stringify(__APP_INFO__),
// 注入环境变量到客户端
__APP_ENV__: JSON.stringify(env),
},
resolve: {
alias: [
{
find: '@',
replacement: resolve(__dirname, './src'),
},
],
},
server: {
open: true,
host: true,
cors: true,
port: Number(env.VITE_PORT),
proxy: {
'/api': {
target: 'https://custom-chart-pre-api.shiyue.com',
changeOrigin: true,
secure: false,
},
},
},
plugins: [
vue(),
Inspector(),
Unocss(),
vueJsx(),
// 指定 mkcert 的下载源为 coding从 coding.net 镜像下载证书
mkcert({ source: 'coding' }),
// 开启 http2 代理
Http2Proxy(),
createSvgIconsPlugin({
// Specify the icon folder to be cached
iconDirs: [resolve(process.cwd(), 'src/assets/icons')],
// Specify symbolId format
symbolId: 'svg-icon-[dir]-[name]',
}),
Components({
dts: 'types/components.d.ts',
types: [
{
from: './src/components/basic/button/',
names: ['AButton'],
},
{
from: 'vue-router',
names: ['RouterLink', 'RouterView'],
},
],
resolvers: [
AntDesignVueResolver({
importStyle: false, // css in js
exclude: ['Button'],
}),
],
}),
// https://github.com/fi3ework/vite-plugin-checker
isDev &&
checker({
typescript: true,
// vueTsc: true,
eslint: {
useFlatConfig: true,
lintCommand: 'eslint "./src/**/*.{.vue,ts,tsx}"', // for example, lint .ts & .tsx
},
overlay: {
initialIsOpen: false,
},
}),
],
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true,
modifyVars: {},
},
},
},
optimizeDeps: {
include: ['lodash-es', 'ant-design-vue/es/locale/zh_CN', 'ant-design-vue/es/locale/en_US'],
},
esbuild: {
supported: {
// https://github.com/vitejs/vite/pull/8665
'top-level-await': true,
},
},
build: {
// outDir: resolve(process.cwd(), '../../dist/platform'), // 输出到根目录/designer
emptyOutDir: true,
terserOptions: {
compress: {
drop_console: true,
drop_debugger: true,
},
},
},
};
};