113 lines
3.1 KiB
JavaScript
113 lines
3.1 KiB
JavaScript
import * as path from 'path';
|
|
import { sentryVitePlugin } from '@sentry/vite-plugin';
|
|
import legacy from '@vitejs/plugin-legacy';
|
|
import react from '@vitejs/plugin-react-swc';
|
|
import { defineConfig, loadEnv } from 'vite';
|
|
import checker from 'vite-plugin-checker';
|
|
import tsconfigPaths from 'vite-tsconfig-paths';
|
|
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
|
import { createRequire } from 'module';
|
|
const require = createRequire(import.meta.url);
|
|
|
|
/** @type {import('vite').UserConfig} */
|
|
export default ({ mode }) => {
|
|
process.env = { ...process.env, ...loadEnv(mode, process.cwd()) };
|
|
|
|
const plugins = [
|
|
tsconfigPaths(),
|
|
legacy({
|
|
targets: ['chrome >= 64', 'safari >= 12', 'edge >= 79', 'firefox >= 67'],
|
|
modernPolyfills: ['es.object.from-entries', 'es/global-this', 'web/queue-microtask.js'],
|
|
ignoreBrowserslistConfig: true,
|
|
renderLegacyChunks: false,
|
|
}),
|
|
checker({
|
|
// e.g. use TypeScript check
|
|
typescript: true,
|
|
overlay: false,
|
|
lintCommand: 'eslint "./src/**/*.{ts,tsx}"',
|
|
}),
|
|
react({
|
|
jsxImportSource: '@emotion/react',
|
|
babel: {
|
|
plugins: ['@emotion/babel-plugin'],
|
|
},
|
|
}),
|
|
];
|
|
|
|
if (mode === 'production') {
|
|
plugins.push(
|
|
sentryVitePlugin({
|
|
org: 'media-cc',
|
|
project: 'javascript-react',
|
|
authToken: process.env.SENTRY_AUTH_TOKEN,
|
|
bundleSizeOptimizations: {
|
|
excludeDebugStatements: true,
|
|
// Only relevant if you added `browserTracingIntegration`
|
|
excludePerformanceMonitoring: true,
|
|
// Only relevant if you added `replayIntegration`
|
|
excludeReplayIframe: true,
|
|
excludeReplayShadowDom: true,
|
|
excludeReplayWorker: true,
|
|
},
|
|
disable: false,
|
|
}),
|
|
);
|
|
}
|
|
|
|
return defineConfig({
|
|
build: {
|
|
outDir: 'dist',
|
|
sourcemap: true,
|
|
target: 'es2015',
|
|
rollupOptions: {
|
|
plugins: [
|
|
nodeResolve({
|
|
// Add the node-resolve plugin here
|
|
browser: true, // Resolve for browser environment (set to false for Node.js)
|
|
preferBuiltins: false, // Avoid using Node.js built-ins if you don't want them
|
|
}),
|
|
],
|
|
},
|
|
},
|
|
esbuild: {
|
|
drop: ['console'],
|
|
},
|
|
plugins: plugins,
|
|
server: {
|
|
host: 'localhost',
|
|
port: 3000,
|
|
proxy: {
|
|
'/auth': {
|
|
target: process.env.VITE_APP_AUTH_PROXY_HOST,
|
|
changeOrigin: true,
|
|
secure: false,
|
|
},
|
|
'/api': {
|
|
target: process.env.VITE_APP_API_PROXY_HOST,
|
|
changeOrigin: true,
|
|
secure: false,
|
|
},
|
|
},
|
|
},
|
|
test: {
|
|
globals: true,
|
|
environment: 'jsdom',
|
|
setupFiles: ['./vitest.setup.ts'],
|
|
alias: {
|
|
'~': path.resolve(__dirname, 'src'),
|
|
},
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
'~': path.resolve(__dirname, 'src'),
|
|
'@use-blocker': path.resolve(__dirname, 'src/shared/lib/hooks/use-blocker.ts'),
|
|
},
|
|
},
|
|
cacheDir: './.vite',
|
|
optimizeDeps: {
|
|
entries: ['./index.html'],
|
|
},
|
|
});
|
|
};
|