51 lines
1.7 KiB
JavaScript
51 lines
1.7 KiB
JavaScript
import path from 'node:path'
|
|
import config from '@aklive2d/config'
|
|
import * as showcaseDirs from '@aklive2d/showcase'
|
|
import { copyDirectoryData } from '@aklive2d/vite-helpers'
|
|
import react from '@vitejs/plugin-react-swc'
|
|
import { defineConfig } from 'vite'
|
|
|
|
// https://vite.dev/config/
|
|
export default defineConfig(async () => {
|
|
const dataDir = path.resolve(import.meta.dirname, config.dir_name.data)
|
|
const releaseDir = path.resolve(showcaseDirs.DIST_DIR)
|
|
await copyDirectoryData({ dataDir, publicDir: releaseDir })
|
|
return {
|
|
envDir: dataDir,
|
|
plugins: [react()],
|
|
publicDir: releaseDir,
|
|
resolve: {
|
|
alias: {
|
|
'@': path.resolve('./src'),
|
|
'!': dataDir,
|
|
},
|
|
},
|
|
build: {
|
|
emptyOutDir: false,
|
|
outDir: path.resolve(
|
|
import.meta.dirname,
|
|
'..',
|
|
'..',
|
|
config.dir_name.dist
|
|
),
|
|
rollupOptions: {
|
|
output: {
|
|
entryFileNames: `${config.app.directory.assets}/[name].js`,
|
|
chunkFileNames: `${config.app.directory.assets}/[name].js`,
|
|
assetFileNames: `${config.app.directory.assets}/[name].[ext]`,
|
|
manualChunks: (id) => {
|
|
if (id.includes('node_modules')) {
|
|
return 'vendor' // all other package goes here
|
|
} else if (
|
|
id.includes('data') &&
|
|
id.includes('.json')
|
|
) {
|
|
return 'assets'
|
|
}
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
})
|