2024-01-03 17:16:16 -05:00
|
|
|
import * as path from 'path';
|
|
|
|
import { defineConfig, loadEnv } from 'vite';
|
|
|
|
import react from '@vitejs/plugin-react';
|
|
|
|
import svgr from 'vite-plugin-svgr';
|
|
|
|
import macrosPlugin from 'vite-plugin-babel-macros';
|
|
|
|
import { viteStaticCopy } from 'vite-plugin-static-copy';
|
|
|
|
|
|
|
|
// https://vitejs.dev/config/
|
|
|
|
export default defineConfig(({ mode }) => {
|
|
|
|
// Via https://stackoverflow.com/a/66389044.
|
|
|
|
const env = loadEnv(mode, process.cwd(), '');
|
|
|
|
process.env = { ...process.env, ...env };
|
|
|
|
|
|
|
|
// eslint-disable-next-line global-require, import/no-dynamic-require, @typescript-eslint/no-var-requires
|
|
|
|
const themeConfig = require(`./src/conf/theme/${process.env.REACT_APP_THEME_CONFIG}`);
|
|
|
|
|
|
|
|
// Setup proxy to the datahub-frontend service.
|
|
|
|
const frontendProxy = {
|
|
|
|
target: process.env.REACT_APP_PROXY_TARGET || 'http://localhost:9002',
|
|
|
|
changeOrigin: true,
|
|
|
|
};
|
|
|
|
const proxyOptions = {
|
|
|
|
'/logIn': frontendProxy,
|
|
|
|
'/authenticate': frontendProxy,
|
|
|
|
'/api/v2/graphql': frontendProxy,
|
|
|
|
'/track': frontendProxy,
|
|
|
|
};
|
|
|
|
|
|
|
|
return {
|
2024-03-26 17:18:54 -07:00
|
|
|
appType: 'spa',
|
2024-01-03 17:16:16 -05:00
|
|
|
plugins: [
|
|
|
|
react(),
|
|
|
|
svgr(),
|
|
|
|
macrosPlugin(),
|
|
|
|
viteStaticCopy({
|
|
|
|
targets: [
|
|
|
|
// Self-host images by copying them to the build directory
|
|
|
|
{ src: path.resolve(__dirname, 'src/images/*'), dest: 'assets/platforms' },
|
|
|
|
// Also keep the theme json files in the build directory
|
|
|
|
{ src: path.resolve(__dirname, 'src/conf/theme/*.json'), dest: 'assets/conf/theme' },
|
|
|
|
],
|
|
|
|
}),
|
|
|
|
viteStaticCopy({
|
|
|
|
targets: [
|
|
|
|
// Copy monaco-editor files to the build directory
|
|
|
|
// Because of the structured option, specifying dest .
|
|
|
|
// means that it will mirror the node_modules/... structure
|
|
|
|
// in the build directory.
|
|
|
|
{
|
|
|
|
src: 'node_modules/monaco-editor/min/vs/',
|
|
|
|
dest: '.',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
src: 'node_modules/monaco-editor/min-maps/vs/',
|
|
|
|
dest: '.',
|
|
|
|
rename: (name, ext, fullPath) => {
|
|
|
|
console.log(name, ext, fullPath);
|
|
|
|
return name;
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
structured: true,
|
|
|
|
}),
|
|
|
|
],
|
|
|
|
// optimizeDeps: {
|
|
|
|
// include: ['@ant-design/colors', '@ant-design/icons', 'lodash-es', '@ant-design/icons/es/icons'],
|
|
|
|
// },
|
|
|
|
envPrefix: 'REACT_APP_',
|
|
|
|
build: {
|
|
|
|
outDir: 'dist',
|
|
|
|
},
|
|
|
|
server: {
|
|
|
|
open: false,
|
|
|
|
host: false,
|
|
|
|
port: 3000,
|
|
|
|
proxy: proxyOptions,
|
|
|
|
},
|
|
|
|
css: {
|
|
|
|
preprocessorOptions: {
|
|
|
|
less: {
|
|
|
|
javascriptEnabled: true,
|
|
|
|
// Override antd theme variables.
|
|
|
|
// https://4x.ant.design/docs/react/customize-theme#Ant-Design-Less-variables
|
|
|
|
modifyVars: themeConfig.styles,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
test: {
|
|
|
|
globals: true,
|
|
|
|
environment: 'jsdom',
|
|
|
|
setupFiles: './src/setupTests.ts',
|
|
|
|
css: true,
|
|
|
|
// reporters: ['verbose'],
|
|
|
|
coverage: {
|
|
|
|
reporter: ['text', 'json', 'html'],
|
|
|
|
include: ['src/**/*'],
|
|
|
|
exclude: [],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
|
|
|
});
|