Files
aklive2d/apps/directory/vite.config.js
2025-05-02 02:27:42 +08:00

51 lines
1.8 KiB
JavaScript

import path from 'node:path'
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react-swc'
import config from '@aklive2d/config'
import * as showcaseDirs from '@aklive2d/showcase'
import { copyDirectoryData } from '@aklive2d/vite-helpers'
// 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.directory.assets_dir}/[name]-[hash:8].js`,
chunkFileNames: `${config.directory.assets_dir}/[name]-[hash:8].js`,
assetFileNames: `${config.directory.assets_dir}/[name]-[hash:8].[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'
}
},
},
},
},
}
})