vite-plugin-zips
A Vite plugin for automatically compressing specified directories into zip archives after build.
中文文档
📦 Installation
npm install vite-plugin-zips -D
# or
pnpm add vite-plugin-zips -D
# or
yarn add vite-plugin-zips -D
🚀 Basic Usage
import { defineConfig } from "vite";
import zips from "vite-plugin-zips";
export default defineConfig({
plugins: [zips()],
});
⚙️ Configuration Options
import { defineConfig } from "vite";
import zips from "vite-plugin-zips";
export default defineConfig({
plugins: [
zips({
// Directory to zip, default: 'dist'
dir: 'dist',
// Output filename, default: '{name}.zip' (directory name)
out: 'my-build.zip',
// Whether to include directory structure, default: true
includeDir: true,
// Whether to clear old archives, default: true
clearOld: true,
// Files/patterns to ignore
ignore: ['**/*.map', 'temp/**'],
// Files/patterns to include, default: ['**/*'] (include all by default)
include: ['**/*.js', '**/*.html'],
// Path prefix for files in archive, default: '' (no prefix)
pathPrefix: 'assets/',
// Timezone for date formatting in template variables, default: 'local' (system timezone)
timezone: 'Asia/Shanghai'
})
],
});
Configuration Parameters
Parameter | Type | Default | Description |
---|
dir | string | string[] | 'dist' | Directory(ies) to zip |
out | string | '{name}.zip' | Output filename template |
includeDir | boolean | true | Whether to include directory structure |
clearOld | boolean | true | Whether to clear old archives |
ignore | string[] | [] | Files/patterns to ignore (glob patterns) |
include | string[] | ['**/*'] | Files/patterns to include (glob patterns, includes all by default) |
pathPrefix | string | '' | Path prefix for files in archive |
timezone | string | 'local' | Timezone for date formatting in template variables |
Template Variables
{name}
: Original directory name (or 'dist' for multiple directories)
{date}
: Date in format yyMMdd
{datetime}
: Date and time in format yyMMddHHmmss
{hash}
: Random hash string (8 characters)
{yyyyMMdd}
, {HHmmss}
, {yy-MM-dd}
, etc.: Custom date format patterns
📚 Usage Examples
Basic Usage
// Compress 'dist' directory to 'dist.zip'
zips()
Multiple Directories
// Compress multiple directories
zips({
dir: ['dist', 'public', 'assets'],
out: 'bundle.zip'
})
Ignore Specific Files
// Ignore source maps and temporary files
zips({
ignore: ['**/*.map', 'temp/**', '*.log']
})
Custom Output Filename
// Use custom filename with various templates
zips({
out: 'my-project-{datetime}.zip'
})
// Use custom date format
zips({
out: 'build-{yyyy-MM-dd}-{hash}.zip'
})
Exclude Directory Structure
// Compress files directly without directory structure
zips({
includeDir: false
})
Include Specific Files
// Only include JavaScript and HTML files
zips({
include: ['**/*.js', '**/*.html']
})
Add Path Prefix
// Add prefix to all file paths in archive
zips({
pathPrefix: 'dist/'
})
Timezone Configuration
// Use UTC timezone
zips({
out: 'build-{datetime}.zip',
timezone: 'UTC'
})
// Use specific timezone (IANA timezone identifier)
zips({
out: 'build-{datetime}.zip',
timezone: 'Asia/Shanghai' // UTC+8
})
// Use UTC offset format
zips({
out: 'build-{datetime}.zip',
timezone: '+08:00' // UTC+8
})
// Use local timezone (default)
zips({
out: 'build-{datetime}.zip',
timezone: 'local'
})
Supported Timezone Formats:
'local'
: Use system local timezone (default)
'UTC'
: Use Coordinated Universal Time
- IANA timezone identifiers: e.g.,
'Asia/Shanghai'
, 'America/New_York'
, 'Europe/London'
, etc.
- UTC offset: e.g.,
'+08:00'
, '-05:00'
, etc.
🤝 Contributing
Issues and Pull Requests are welcome!
📄 License
MIT License
🔗 Links