Files
nice-app-web/vite.config.mjs
2025-09-17 10:05:25 +09:00

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: 'build',
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'],
},
});
};