69 lines
2.2 KiB
JavaScript
69 lines
2.2 KiB
JavaScript
import { defineConfig } from 'vite';
|
|
import react from '@vitejs/plugin-react';
|
|
import path from 'path';
|
|
import { copyFileSync, mkdirSync, readdirSync } from 'fs';
|
|
|
|
// 다국어 파일 복사 플러그인
|
|
function copyLangFiles() {
|
|
return {
|
|
name: 'copy-lang-files',
|
|
closeBundle() {
|
|
const srcLangDir = path.resolve(__dirname, 'resources/js/core/lang');
|
|
const destLangDir = path.resolve(__dirname, 'public/build/core/lang');
|
|
|
|
mkdirSync(destLangDir, { recursive: true });
|
|
|
|
// lang 디렉토리의 모든 .json 파일 복사
|
|
const files = readdirSync(srcLangDir).filter(file => file.endsWith('.json'));
|
|
|
|
files.forEach(file => {
|
|
const src = path.join(srcLangDir, file);
|
|
const dest = path.join(destLangDir, file);
|
|
copyFileSync(src, dest);
|
|
console.log(`✓ Copied ${file} to public/build/core/lang/`);
|
|
});
|
|
}
|
|
};
|
|
}
|
|
|
|
export default defineConfig({
|
|
plugins: [react(), copyLangFiles()],
|
|
publicDir: false,
|
|
// 환경 변수 정의 (React 빌드용)
|
|
define: {
|
|
'process.env.NODE_ENV': JSON.stringify('production'),
|
|
},
|
|
build: {
|
|
outDir: 'public/build/core',
|
|
emptyOutDir: false,
|
|
lib: {
|
|
entry: path.resolve(__dirname, 'resources/js/core/template-engine.ts'),
|
|
name: 'G7Core',
|
|
formats: ['iife'],
|
|
fileName: () => 'template-engine.min.js',
|
|
},
|
|
rollupOptions: {
|
|
// React/ReactDOM을 external에서 제거하여 번들에 포함
|
|
// external: ['react', 'react-dom'],
|
|
output: {
|
|
// React/ReactDOM이 번들에 포함되므로 globals 불필요
|
|
// globals: {
|
|
// react: 'React',
|
|
// 'react-dom': 'ReactDOM',
|
|
// },
|
|
exports: 'named',
|
|
// IIFE 번들에서 전역 변수 자동 할당
|
|
extend: true,
|
|
},
|
|
},
|
|
minify: 'esbuild',
|
|
sourcemap: true,
|
|
target: 'es2020',
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
'@': path.resolve(__dirname, 'resources/js'),
|
|
},
|
|
},
|
|
});
|