mirror of
https://github.com/fantastic-admin/basic.git
synced 2026-10-07 16:28:49 +08:00
增加打包后生成存档文件支持
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
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()
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import createMock from './mock'
|
||||
import createLayouts from './layouts'
|
||||
import createPages from './pages'
|
||||
import createCompression from './compression'
|
||||
import createArchiver from './archiver'
|
||||
import createConsole from './console'
|
||||
import createBanner from './banner'
|
||||
|
||||
@@ -38,6 +39,7 @@ export default function createVitePlugins(viteEnv, isBuild = false) {
|
||||
vitePlugins.push(createLayouts())
|
||||
vitePlugins.push(createPages())
|
||||
vitePlugins.push(...createCompression(viteEnv, isBuild))
|
||||
vitePlugins.push(createArchiver(viteEnv))
|
||||
vitePlugins.push(createConsole())
|
||||
vitePlugins.push(createBanner())
|
||||
return vitePlugins
|
||||
|
||||
Reference in New Issue
Block a user