Files
aklive2d/apps/showcase/vite.config.js
2025-10-05 18:39:22 +08:00

58 lines
1.6 KiB
JavaScript

import path from 'node:path'
import { envParser, file } from '@aklive2d/libs'
import { has } from '@aklive2d/operator'
import { copyShowcaseData } from '@aklive2d/vite-helpers'
import { defineConfig } from 'vite'
import * as dirs from './index.js'
// https://vite.dev/config/
export default defineConfig(({ command, isPreview }) => {
let newOutDir = dirs.OUT_DIR
if (command === 'serve') {
const { name } = envParser.parse({
name: {
type: 'string',
short: 'n',
},
})
if (!name) {
throw new Error('Please set the operator name.')
}
if (!has(name)) {
throw new Error(`Invalid operator name: ${name}`)
}
if (isPreview) {
newOutDir = path.join(dirs.DIST_DIR, name)
} else {
file.rm(dirs.DATA_DIR)
copyShowcaseData(name, {
dataDir: dirs.DATA_DIR,
publicAssetsDir: dirs.PUBLIC_ASSETS_DIR,
})
}
}
return {
base: '',
resolve: {
alias: {
'@': path.resolve('./src'),
'!': dirs.DATA_DIR,
},
},
envDir: dirs.DATA_DIR,
publicDir: dirs.PUBLIC_DIR,
build: {
chunkSizeWarningLimit: 10000,
outDir: newOutDir,
rollupOptions: {
output: {
entryFileNames: `assets/[name].js`,
chunkFileNames: `assets/[name].js`,
assetFileNames: `assets/[name].[ext]`,
},
},
},
}
})