mirror of
				https://github.com/1Panel-dev/1Panel.git
				synced 2025-10-31 19:26:02 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| import { defineConfig, loadEnv, ConfigEnv, UserConfig } from 'vite';
 | |
| import { createHtmlPlugin } from 'vite-plugin-html';
 | |
| import vue from '@vitejs/plugin-vue';
 | |
| import { resolve } from 'path';
 | |
| import { wrapperEnv } from './src/utils/get-env';
 | |
| import { visualizer } from 'rollup-plugin-visualizer';
 | |
| import viteCompression from 'vite-plugin-compression';
 | |
| import VueSetupExtend from 'vite-plugin-vue-setup-extend';
 | |
| import eslintPlugin from 'vite-plugin-eslint';
 | |
| import vueJsx from '@vitejs/plugin-vue-jsx';
 | |
| import DefineOptions from 'unplugin-vue-define-options/vite';
 | |
| import MonacoEditorPlugin from 'vite-plugin-monaco-editor';
 | |
| 
 | |
| // @see: https://vitejs.dev/config/
 | |
| export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
 | |
|     const env = loadEnv(mode, process.cwd());
 | |
|     const viteEnv = wrapperEnv(env);
 | |
| 
 | |
|     return {
 | |
|         // base: '/kubepi',
 | |
|         // alias config
 | |
|         resolve: {
 | |
|             alias: {
 | |
|                 '@': resolve(__dirname, './src'),
 | |
|                 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js',
 | |
|             },
 | |
|         },
 | |
|         // global css
 | |
|         css: {
 | |
|             preprocessorOptions: {
 | |
|                 scss: {
 | |
|                     additionalData: `@use "@/styles/var.scss" as *;`,
 | |
|                 },
 | |
|             },
 | |
|         },
 | |
|         server: {
 | |
|             port: viteEnv.VITE_PORT,
 | |
|             open: viteEnv.VITE_OPEN,
 | |
|             // host: '0.0.0.0',
 | |
|             // https: false,
 | |
|             proxy: {
 | |
|                 // '/1panel': {
 | |
|                 //     target: 'http://0.0.0.0:4004',
 | |
|                 // },
 | |
|                 '/api/v1': {
 | |
|                     target: 'http://127.0.0.1:9999',
 | |
|                     changeOrigin: true,
 | |
|                     // rewrite: (path) => path.replace(/^\/api/, ''),
 | |
|                 },
 | |
|             },
 | |
|         },
 | |
|         plugins: [
 | |
|             vue(),
 | |
|             createHtmlPlugin({
 | |
|                 inject: {
 | |
|                     data: {
 | |
|                         title: viteEnv.VITE_GLOB_APP_TITLE,
 | |
|                     },
 | |
|                 },
 | |
|             }),
 | |
|             DefineOptions(),
 | |
|             // * EsLint 报错信息显示在浏览器界面上
 | |
|             eslintPlugin({
 | |
|                 exclude: ['**/*.js'],
 | |
|             }),
 | |
|             // * vite 可以使用 jsx/tsx 语法
 | |
|             vueJsx(),
 | |
|             // * name 可以写在 script 标签上
 | |
|             VueSetupExtend(),
 | |
| 
 | |
|             MonacoEditorPlugin({}),
 | |
|             viteEnv.VITE_REPORT && visualizer(),
 | |
|             // * gzip compress
 | |
|             viteEnv.VITE_BUILD_GZIP &&
 | |
|                 viteCompression({
 | |
|                     verbose: true,
 | |
|                     disable: false,
 | |
|                     threshold: 10240,
 | |
|                     algorithm: 'gzip',
 | |
|                     ext: '.gz',
 | |
|                 }),
 | |
|         ],
 | |
|         esbuild: {
 | |
|             pure: viteEnv.VITE_DROP_CONSOLE ? ['console.log', 'debugger'] : [],
 | |
|         },
 | |
|         build: {
 | |
|             outDir: '../cmd/server/web',
 | |
|             minify: 'esbuild',
 | |
|             rollupOptions: {
 | |
|                 output: {
 | |
|                     // Static resource classification and packaging
 | |
|                     chunkFileNames: 'assets/js/[name]-[hash].js',
 | |
|                     entryFileNames: 'assets/js/[name]-[hash].js',
 | |
|                     assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
 | |
|                 },
 | |
|             },
 | |
|         },
 | |
|     };
 | |
| });
 |