使用指南
vite-plugin-zip-pack 是一个开源的 Vite 插件,用于在构建完成后自动将构建输出目录打包成 ZIP 压缩文件。
安装
使用 npm:
bash
npm install -D @adjfut/vite-plugin-zip-pack使用 pnpm:
bash
pnpm add -D @adjfut/vite-plugin-zip-pack使用 yarn:
bash
yarn add -D @adjfut/vite-plugin-zip-pack基础使用
在 vite.config.js 或 vite.config.ts 中引入并配置插件:
ts
import zipPack from '@adjfut/vite-plugin-zip-pack';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [zipPack()]
});运行 npm run build 后,插件会在构建完成后自动将 dist 目录打包成 dist.zip 文件。
使用场景
场景 1: 基础打包
最简单的使用方式,使用默认配置:
ts
import zipPack from '@adjfut/vite-plugin-zip-pack';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [zipPack()]
});构建完成后会在项目根目录生成 dist.zip 文件。
场景 2: 自定义输出路径和文件名
ts
import zipPack from '@adjfut/vite-plugin-zip-pack';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [
zipPack({
inDir: './dist',
outDir: './output',
outFileName: 'my-app-v1.0.0.zip'
})
]
});场景 3: 添加版本号前缀
如果你希望压缩包内的文件都在一个带版本号的目录下:
ts
import zipPack from '@adjfut/vite-plugin-zip-pack';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [
zipPack({
pathPrefix: 'my-app-v1.0.0'
})
]
});这样压缩包内的文件结构会是:
my-app-v1.0.0/
├── index.html
├── assets/
└── ...场景 4: 过滤不需要的文件
排除某些文件或目录:
ts
import zipPack from '@adjfut/vite-plugin-zip-pack';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [
zipPack({
filter: (fileName, filePath, isDirectory) => {
// 排除 .map 文件
if (fileName.endsWith('.map')) {
return false;
}
// 排除测试文件
if (fileName.includes('.test.')) {
return false;
}
// 排除 node_modules
if (isDirectory && fileName === 'node_modules') {
return false;
}
return true;
}
})
]
});场景 5: 构建后自动上传
使用回调函数在打包完成后执行自定义操作:
ts
import zipPack from '@adjfut/vite-plugin-zip-pack';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [
zipPack({
done: async (file) => {
const filePath = file.toString();
// 自动上传到服务器
},
error: (error) => {
// 发送错误通知
}
})
]
});场景 6: 禁用日志和哈希输出
如果不需要详细的日志信息:
ts
import zipPack from '@adjfut/vite-plugin-zip-pack';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [
zipPack({
// ['info', 'fileHash', 'error'] | boolean
logLevel: false
})
]
});与 CI/CD 集成
GitHub Actions
yaml
name: Build and Package
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm install
- run: npm run build
# 构建完成后会自动生成 dist.zip
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: dist-zip
path: dist.zipGitLab CI
yaml
build:
stage: build
script:
- npm install
- npm run build
artifacts:
paths:
- dist.zip
expire_in: 1 week注意事项
插件执行时机: 插件在 Vite 构建完成后(
closeBundle钩子)执行,确保所有文件都已生成。目录存在性: 如果
inDir指定的目录不存在,插件会抛出错误。文件覆盖: 如果输出目录已存在同名 ZIP 文件,会被自动覆盖。
路径格式:
pathPrefix必须是相对路径,不能是绝对路径。性能考虑: 对于大型项目,打包过程可能需要一些时间,建议在 CI/CD 环境中使用。