mirror of
https://github.com/vastxie/99AI.git
synced 2025-09-17 17:26:38 +08:00
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import fs from 'node:fs'
|
|
import dayjs from 'dayjs'
|
|
import archiver from 'archiver'
|
|
import type { Plugin } from 'vite'
|
|
|
|
function sleep(ms) {
|
|
return new Promise(resolve => setTimeout(resolve, ms))
|
|
}
|
|
|
|
export default function createArchiver(env): Plugin {
|
|
const { VITE_BUILD_ARCHIVE } = env
|
|
let outDir: string
|
|
return {
|
|
name: 'vite-plugin-archiver',
|
|
apply: 'build',
|
|
configResolved(resolvedConfig) {
|
|
outDir = resolvedConfig.build.outDir
|
|
},
|
|
async closeBundle() {
|
|
if (['zip', 'tar'].includes(VITE_BUILD_ARCHIVE)) {
|
|
await sleep(1000)
|
|
const archive = archiver(VITE_BUILD_ARCHIVE, {
|
|
...(VITE_BUILD_ARCHIVE === 'zip' && { zlib: { level: 9 } }),
|
|
...(VITE_BUILD_ARCHIVE === 'tar' && { gzip: true, gzipOptions: { level: 9 } }),
|
|
})
|
|
const output = fs.createWriteStream(`${outDir}.${dayjs().format('YYYY-MM-DD-HH-mm-ss')}.${VITE_BUILD_ARCHIVE === 'zip' ? 'zip' : 'tar.gz'}`)
|
|
archive.pipe(output)
|
|
archive.directory(outDir, false)
|
|
archive.finalize()
|
|
}
|
|
},
|
|
}
|
|
}
|