File: /home/eslinced-103/brise-edu.or.kr/vite.config.js
import { defineConfig,loadEnv } from 'vite';
import laravel from 'laravel-vite-plugin';
import vue from '@vitejs/plugin-vue';
import fileSystem from 'fs';
import path from "path";
const viteAppInputs = [
'resources/js/app.js',
'resources/css/tailwind.css'
];
/**
* @brief Amuz Packages 에 포함된 테마폴더의 vue 나 inertiaJS의 app.js를 merge 해준다.
*/
const packageDirectory = './AmuzPackages/';
fileSystem.readdir(packageDirectory, (err, packages) => {
packages.forEach(packageName => {
if(!packageName.startsWith(".")){
console.log("detected Package : ", packageName);
let themePath = packageDirectory + packageName;
fileSystem.readdir(themePath, (err2, directories) => {
directories.forEach(directoryName => {
if(directoryName.startsWith("theme-")){
console.log('detected Theme : ', directoryName);
let themeAppJsFile = themePath + "/" + directoryName + "/resources/js/app.js";
fileSystem.access(themeAppJsFile, fileSystem.F_OK, (err) => {
if (err) {
console.error("theme",directoryName,"에서 app.js 발견되지 않음 : ",themeAppJsFile);
return true;
}
viteAppInputs.push(themeAppJsFile);
});
let themeAppJsxFile = themePath + "/" + directoryName + "/resources/js/app.jsx";
fileSystem.access(themeAppJsxFile, fileSystem.F_OK, (err) => {
if (err) {
console.error("theme",directoryName,"에서 app.jsx 발견되지 않음 : ",themeAppJsxFile);
return true;
}
viteAppInputs.push(themeAppJsxFile);
});
let themeAppCssFile = themePath + "/" + directoryName + "/resources/css/app.css";
fileSystem.access(themeAppCssFile, fileSystem.F_OK, (err) => {
if (err) {
console.error("theme",directoryName,"에서 app.css 발견되지 않음 : ",themeAppJsFile);
return true;
}
viteAppInputs.push(themeAppCssFile);
});
}
});
});
}
});
});
export default ( {mode} ) => {
process.env = { ...process.env, ...loadEnv( mode, process.cwd() ) };
let config = {
plugins: [
laravel({
input: viteAppInputs,
refresh: true,
}),
vue({
template: {
transformAssetUrls: {
base: null,
includeAbsolute: false,
},
},
}),
],
build: {
target: 'esnext',
chunkSizeWarningLimit: 1600,
rollupOptions: {
output:{
manualChunks(id) {
if (id.includes('node_modules')) {
return id.toString().split('node_modules/')[1].split('/')[0].toString();
}
}
}
}
}
}
if( process.env.VITE_APP_ENV === "local" ) {
console.log( 'this is local mode' );
config[ "server" ] = {
secure: true,
host: 'localhost',
https: {
key: fileSystem.readFileSync( './localhost-key.pem' ),
cert: fileSystem.readFileSync( './localhost.pem' ),
},
hmr: {
host: 'localhost',
},
};
}
return defineConfig(config);
}