[...], 'type' => '...', 'target' => '...', 'theme' => '...']
\$entries = \$params['entries'];
\$type = \$params['type'] ?? 'core';
\$target = \$params['target'] ?? 'admin';
\$themeName = \$params['theme'] ?? theme_name(\$type, \$target);
} else {
// 단순 배열 형태: [entry1, entry2, ...]
\$entries = \$params;
\$type = 'core';
\$target = 'admin';
\$themeName = theme_name(\$type, \$target);
}
} else {
// 단일 값인 경우
\$entries = [\$params];
\$type = 'core';
\$target = 'admin';
\$themeName = theme_name(\$type, \$target);
}
// Vite 개발 서버 실행 여부 확인
\$viteDevServerRunning = false;
\$viteDevServerUrl = config('app.vite_dev_server_url', 'http://localhost:5173');
if (app()->environment('local', 'development')) {
\$context = stream_context_create([
'http' => [
'timeout' => 1,
'ignore_errors' => true
]
]);
\$viteDevServerRunning = @file_get_contents(\$viteDevServerUrl . '/@vite/client', false, \$context) !== false;
}
if (\$viteDevServerRunning) {
// 개발 서버가 실행 중인 경우 - Vite 개발 서버 사용
echo '';
foreach (\$entries as \$entry) {
echo '';
}
} else {
// 프로덕션 또는 개발 서버 미실행 - 빌드된 파일 사용
\$buildPath = resource_path('themes/' . \$type . '/' . \$target . '/' . \$themeName . '/build');
\$manifestPath = \$buildPath . '/manifest.json';
if (file_exists(\$manifestPath) && is_array(\$entries)) {
\$manifest = json_decode(file_get_contents(\$manifestPath), true);
foreach (\$entries as \$entry) {
if (isset(\$manifest[\$entry])) {
\$entryData = \$manifest[\$entry];
// JavaScript 파일 로드
if (isset(\$entryData['file'])) {
\$jsFileName = basename(\$entryData['file']);
\$jsFileName = preg_replace('/^(.+?)-[^.]+\.js$/', '\$1.js', \$jsFileName);
\$routeParams = [
'themeName' => \$themeName,
'path' => \$jsFileName,
'type' => \$type,
'target' => \$target
];
// 모듈명이 있는 경우 추가
\$moduleName = \$params['module_name'] ?? null;
if (\$moduleName) {
\$routeParams['module_name'] = \$moduleName;
}
echo '';
}
// CSS 파일 로드
if (isset(\$entryData['css'])) {
foreach (\$entryData['css'] as \$cssFile) {
\$cssFileName = basename(\$cssFile);
\$cssFileName = preg_replace('/^(.+?)-[^.]+\.css$/', '\$1.css', \$cssFileName);
\$routeParams = [
'themeName' => \$themeName,
'path' => \$cssFileName,
'type' => \$type,
'target' => \$target
];
// 모듈명이 있는 경우 추가
\$moduleName = \$params['module_name'] ?? null;
if (\$moduleName) {
\$routeParams['module_name'] = \$moduleName;
}
echo '';
}
}
}
}
}
}
?>";
});
}
}