58 lines
1.6 KiB
JavaScript
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]`,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
})
|