blob: 799fdf323dc44f9a525f47a1c0c6d2499387eebd [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { TanStackRouterVite } from '@tanstack/router-plugin/vite';
import react from '@vitejs/plugin-react-swc';
import observerPlugin from 'mobx-react-observer/swc-plugin';
import postcssPresetMantine from 'postcss-preset-mantine';
import postcssSimpleVars from 'postcss-simple-vars';
import UnpluginIcons from 'unplugin-icons/vite';
import UnpluginInfo from 'unplugin-info/vite';
import { defineConfig } from 'vite';
import tsconfigPaths from 'vite-tsconfig-paths';
import { API_PREFIX, BASE_PATH } from './src/config/constant';
import i18nProgress from './vite-plugin-i18n-progress';
const inDevContainer = process.env.REMOTE_CONTAINERS === 'true';
if (inDevContainer) {
// eslint-disable-next-line no-console
console.info('Running in dev container');
}
// https://vite.dev/config/
export default defineConfig({
base: BASE_PATH,
server: {
// as an example, if you want to use the e2e server as the api server,
proxy: {
[API_PREFIX]: {
target: 'http://localhost:9180',
changeOrigin: true,
},
},
...(inDevContainer && {
host: '0.0.0.0',
port: 5173,
strictPort: true,
hmr: {
protocol: 'ws',
host: '127.0.0.1',
port: 5174,
},
proxy: {
[API_PREFIX]: {
target: 'http://apisix:9180',
changeOrigin: true,
},
},
}),
},
build: {
rollupOptions: {
output: {
manualChunks: {
'react-vendor': ['react', 'react-dom'],
'monaco-editor-vendor': ['monaco-editor', '@monaco-editor/react'],
'antd-vendor': [
'antd',
'@ant-design/pro-components',
'@ant-design/v5-patch-for-react-19',
],
},
},
},
},
plugins: [
tsconfigPaths(),
UnpluginIcons({
autoInstall: true,
compiler: 'jsx',
jsx: 'react',
}),
UnpluginInfo(),
TanStackRouterVite({
target: 'react',
autoCodeSplitting: true,
semicolons: false,
}),
i18nProgress({
langs: ['en', 'es', 'de', 'zh'],
baseLang: 'en',
getTranslationDir: (lang) => `./src/locales/${lang}`,
}),
react({
plugins: [observerPlugin() as never],
}),
],
css: {
postcss: {
plugins: [
postcssPresetMantine,
postcssSimpleVars({
variables: {
'mantine-breakpoint-xs': '36em',
'mantine-breakpoint-sm': '48em',
'mantine-breakpoint-md': '62em',
'mantine-breakpoint-lg': '75em',
'mantine-breakpoint-xl': '88em',
},
}),
],
},
},
});