Skip to content

Repository files navigation

zipx-cli

npm versionnpm downloadsbundleLicense

一个简单、快速、支持 include / exclude Glob 过滤的目录压缩 CLI / 库。

底层基于 tinyglobby + JSZip:极速文件匹配 + 高压缩率。开箱即用:默认把 dist 打成 archive.zip

✨ 特性

  • 🔍 支持 Glob 包含 / 排除(含隐藏文件)
  • 🗂 保留相对目录结构
  • 💨 tinyglobby 极速匹配
  • 🧪 ESM 为主,TypeScript 类型完善
  • 🧰 同时支持命令行与程序调用

📦 安装

全局(仅 CLI):

pnpm add -g zipx-cli
#
npm i -g zipx-cli

项目内(CLI + 代码调用):

pnpm add -D zipx-cli

🖥️ 命令行使用

zipx [options]
选项别名默认值说明
--target <dir>-tdist要压缩的目录;可重复或用逗号分隔以指定多个目录(会一起打包)
--no-namespacefalse多目录时不加前缀(默认会加前缀:按目录相对 cwd 的路径),可能造成同名文件覆盖
--output <file>-oarchive输出文件名(可不带 .zip)
--include <patterns...>-i**/*仅包含的 Glob 模式
--exclude <patterns...>-e-需要排除的 Glob 模式
--help查看帮助

示例:

# 压缩 dist -> archive.zip
zipx
# 指定目录与输出名
zipx -t build -o release
# 多目录一起打包# 重复传参
zipx -t dist -t public -o release
# 逗号分隔
zipx -t dist,public -o release
# 多目录但不加前缀(平铺合并)
zipx -t dist,public --no-namespace -o release
# 只包含 js 与 map
zipx -i "**/*.js""**/*.js.map"# 排除测试与 map 文件
zipx -e "**/*.test.*""**/*.map"# 组合示例
zipx -t dist -o artifacts/app -i "**/*" -e "**/*.log""**/*.md"

结果:当前工作目录生成 archive.zip(或你指定的名称)。

⚙️ 配置文件

在项目根目录创建 zipx.config.(ts|js|mjs|cjs)

import{defineConfig}from'zipx-cli'exportdefaultdefineConfig({// 单目录target: 'dist',output: 'artifacts/app',include: ['**/*'],exclude: ['**/*.log','**/*.map'],})// 或:多目录exportdefaultdefineConfig({target: ['dist','public'],output: 'artifacts/app',// 关闭命名空间(默认 true)namespace: false,})

命令行参数优先级高于配置文件。

🧩 编程式调用

import{compress}from'zipx-cli'awaitcompress({// 单目录target: 'dist',output: 'release',// 生成 release.zipinclude: ['**/*.js'],exclude: ['**/*.test.js'],})// 多目录awaitcompress({target: ['dist','public'],output: 'release',// 关闭命名空间(默认 true)namespace: false,})

类型定义

interfaceZipxOptions{cwd?: stringtarget?: string|string[]// 默认: dist;数组则代表多个目录一起压缩output?: string// 默认: archive (若无 .zip 自动补全)include?: string[]// 默认: ['**/*']exclude?: string[]namespace?: boolean// 多目录时是否加前缀,默认 true;false 则平铺合并(可能覆盖同名文件)}

🤝 贡献

欢迎 PR,本地开发:

pnpm i
pnpm dev
pnpm test

📄 许可证

MIT License © hackycy

About

🛠 一个简单、快速、支持 include / exclude Glob 过滤的目录压缩 CLI / 库。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages