Skip to content

Commit

Permalink
refactor: 使用 vite-plugin-archiver 插件代替框架存档功能
Browse files Browse the repository at this point in the history
  • Loading branch information
hooray committed Sep 19, 2024
1 parent 8ee69b1 commit 2be9bf1
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 54 deletions.
3 changes: 1 addition & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@
"@iconify/json": "^2.2.243",
"@iconify/vue": "^4.1.2",
"@stylistic/stylelint-config": "^2.0.0",
"@types/archiver": "^6.0.2",
"@types/lodash-es": "^4.17.12",
"@types/mockjs": "^1.0.10",
"@types/nprogress": "^0.2.3",
Expand All @@ -67,7 +66,6 @@
"@vitejs/plugin-vue": "^5.1.3",
"@vitejs/plugin-vue-jsx": "^4.0.1",
"@yeungkc/unocss-preset-safe-area": "^0.0.10",
"archiver": "^7.0.1",
"autoprefixer": "^10.4.20",
"boxen": "^8.0.1",
"bumpp": "^9.5.2",
Expand Down Expand Up @@ -96,6 +94,7 @@
"unplugin-vue-components": "^0.27.4",
"unplugin-vue-router": "^0.10.7",
"vite": "^5.4.2",
"vite-plugin-archiver": "^0.1.1",
"vite-plugin-banner": "^0.7.1",
"vite-plugin-compression2": "^1.2.0",
"vite-plugin-fake-server": "^2.1.1",
Expand Down
39 changes: 19 additions & 20 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 6 additions & 32 deletions vite/plugins.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import path from 'node:path'
import process from 'node:process'
import fs from 'node:fs'
import dayjs from 'dayjs'
import type { PluginOption } from 'vite'
import VueRouter from 'unplugin-vue-router/vite'
import vue from '@vitejs/plugin-vue'
Expand All @@ -15,16 +13,12 @@ import Unocss from 'unocss/vite'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import { vitePluginFakeServer } from 'vite-plugin-fake-server'
import { compression } from 'vite-plugin-compression2'
import archiver from 'archiver'
import Archiver from 'vite-plugin-archiver'
import TurboConsole from 'unplugin-turbo-console/vite'
import banner from 'vite-plugin-banner'
import boxen from 'boxen'
import picocolors from 'picocolors'

function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}

export default function createVitePlugins(viteEnv, isBuild = false) {
const vitePlugins: (PluginOption | PluginOption[])[] = [
VueRouter({
Expand Down Expand Up @@ -89,35 +83,15 @@ export default function createVitePlugins(viteEnv, isBuild = false) {
}),

// https://github.com/nonzzz/vite-plugin-compression
isBuild && viteEnv.VITE_BUILD_COMPRESS.split(',').includes('gzip') && compression(),
isBuild && viteEnv.VITE_BUILD_COMPRESS.split(',').includes('brotli') && compression({
viteEnv.VITE_BUILD_COMPRESS?.split(',').includes('gzip') && compression(),
viteEnv.VITE_BUILD_COMPRESS?.split(',').includes('brotli') && compression({
exclude: [/\.(br)$/, /\.(gz)$/],
algorithm: 'brotliCompress',
}),

(function () {
let outDir: string
return {
name: 'vite-plugin-archiver',
apply: 'build',
configResolved(resolvedConfig) {
outDir = resolvedConfig.build.outDir
},
async closeBundle() {
if (['zip', 'tar'].includes(viteEnv.VITE_BUILD_ARCHIVE)) {
await sleep(1000)
const archive = archiver(viteEnv.VITE_BUILD_ARCHIVE, {
...(viteEnv.VITE_BUILD_ARCHIVE === 'zip' && { zlib: { level: 9 } }),
...(viteEnv.VITE_BUILD_ARCHIVE === 'tar' && { gzip: true, gzipOptions: { level: 9 } }),
})
const output = fs.createWriteStream(`${outDir}.${dayjs().format('YYYY-MM-DD-HH-mm-ss')}.${viteEnv.VITE_BUILD_ARCHIVE === 'zip' ? 'zip' : 'tar.gz'}`)
archive.pipe(output)
archive.directory(outDir, false)
archive.finalize()
}
},
}
})(),
viteEnv.VITE_BUILD_ARCHIVE && Archiver({
archiveType: viteEnv.VITE_BUILD_ARCHIVE,
}),

// https://github.com/unplugin/unplugin-turbo-console
TurboConsole(),
Expand Down

0 comments on commit 2be9bf1

Please sign in to comment.