Files
core2026/app/game-frontend/vite.config.ts
T
Hide_D 566df550cf feat: 게임 정보에 빌드 커밋 표시
프로필 배포가 고정한 전체 커밋 SHA를 프론트 빌드와 Turbo 캐시 입력에 전달한다. 게임 정보 대화상자와 데스크톱·모바일 Chromium 검증을 함께 보강한다.
2026-08-21 01:28:49 +00:00

83 lines
2.6 KiB
TypeScript

import { defineConfig, loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';
import tailwindcss from '@tailwindcss/vite';
import { execFileSync } from 'node:child_process';
import path from 'path';
import { mergeViteEnv } from './src/config/viteEnv';
const fullCommitShaPattern = /^[0-9a-f]{40,64}$/iu;
export const resolveBuildCommitSha = (explicitSha: string | undefined, repositoryRoot: string): string => {
const normalizedExplicitSha = explicitSha?.trim();
if (normalizedExplicitSha && fullCommitShaPattern.test(normalizedExplicitSha)) {
return normalizedExplicitSha.toLowerCase();
}
try {
const repositorySha = execFileSync('git', ['rev-parse', 'HEAD'], {
cwd: repositoryRoot,
encoding: 'utf8',
stdio: ['ignore', 'pipe', 'ignore'],
}).trim();
return fullCommitShaPattern.test(repositorySha) ? repositorySha.toLowerCase() : 'unknown';
} catch {
return 'unknown';
}
};
const normalizeBasePath = (value: string | undefined): string => {
const pathValue = (value ?? '/').trim();
if (!pathValue || pathValue === '/') {
return '/';
}
return `/${pathValue.replace(/^\/+|\/+$/g, '')}/`;
};
const resolvePreviewAllowedHosts = (value: string | undefined): true | string[] => {
const normalized = value?.trim();
if (normalized === '*') {
return true;
}
const hosts = (normalized ?? 'dev-sam-e2e.hided.net')
.split(',')
.map((host) => host.trim())
.filter(Boolean);
return hosts;
};
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
const env = mergeViteEnv(loadEnv(mode, process.cwd(), ''), process.env);
const buildCommitSha = resolveBuildCommitSha(env.VITE_BUILD_COMMIT_SHA, path.resolve(import.meta.dirname, '../..'));
return {
base: normalizeBasePath(env.VITE_APP_BASE_PATH),
plugins: [vue(), tailwindcss()],
define: {
'import.meta.env.VITE_BUILD_COMMIT_SHA': JSON.stringify(buildCommitSha),
},
build: {
sourcemap: true,
},
worker: {
format: 'es',
rolldownOptions: {
output: {
codeSplitting: false,
},
},
},
resolve: {
alias: {
'@': path.resolve(import.meta.dirname, './src'),
},
},
server: {
host: '0.0.0.0',
port: 3001,
},
preview: {
host: '0.0.0.0',
allowedHosts: resolvePreviewAllowedHosts(env.VITE_PREVIEW_ALLOWED_HOSTS),
},
};
});