Files
aklive2d/vite.js

79 lines
1.8 KiB
JavaScript

import path from 'path'
import { fileURLToPath } from 'url'
import { createServer, build, loadEnv } from 'vite'
import getConfig from './libs/config.js'
import { rm } from './libs/file.js'
global.__dirname = path.dirname(fileURLToPath(import.meta.url))
export default class Vite {
#operatorName = process.argv[3]
#config = getConfig()
dev() {
; (async () => {
this.#loadEnvFromEnvFile('development')
const server = await createServer(this.#viteConfig)
await server.listen()
server.printUrls()
})()
}
build() {
; (async () => {
this.#loadEnvFromEnvFile('production')
console.log("Building", this.#operatorName, "...")
await build({
...this.#viteConfig,
logLevel: 'silent',
})
})()
}
#loadEnvFromEnvFile(mode) {
const envPath = path.join(__dirname, this.#config.folder.operator, this.#operatorName)
process.env = { ...loadEnv(mode, envPath) }
rm(path.join(envPath, '.env'))
}
get #viteConfig() {
return {
base: "",
publicDir: path.resolve(__dirname, this.#config.folder.release, this.#operatorName),
root: path.resolve(__dirname),
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
'!': path.resolve(__dirname, this.#config.folder.operator, this.#operatorName),
},
},
build: {
outDir: path.resolve(__dirname, this.#config.folder.release, this.#operatorName),
emptyOutDir: false,
chunkSizeWarningLimit: 10000,
},
}
}
}
function main() {
const MODE = process.argv[2]
const vite = new Vite()
switch (MODE) {
case 'dev':
vite.dev()
break
case 'build':
case 'build-all':
vite.build()
break
default:
break
}
}
main()