vite-plugin-zips
v0.1.0-alpha.2
Published
A Vite plugin for automatically compressing specified directories into zip archives after build.
Maintainers
Readme
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
