7zip-min

中文文档
3.0.1发布于 2026/03/02MITTypeScriptESM + CJS近 30 天下载 14.7万

独立的跨平台拉链/ 有7za的unzip

中文使用文档
文档目录22 节
  1. 特征
  2. 快速启动
  3. 目录
  4. 支持的归档格式
  5. 支持的平台
  6. 导入
  7. API 方法
  8. pack(pathToSrc, pathToArch, [callback])
  9. unpack(pathToArch, [destPath], [callback])
  10. unpackSome(pathToArch, filesToUnpack, [destPath], [callback…
  11. list(pathToArch, [callback])
  12. cmd(paramsArr, [callback])
  13. 配置
  14. getConfig()
  15. config(settings)
  16. 自定义二进制路径
  17. 实例
  18. 处理输出
  19. 替代语法
  20. 电用
  21. 处理错误
  22. 另见

7zip-min (英语)

npm version License: MIT

最小跨平台包/外包装(和任何命令) 7-齐普 为了Node.js.
这不需要 7zip 将安装在您的系统中. 此软件包包含一个独立的 7号线 版本 7-齐普 (使用来自 7zip-bin (英语) 软件包).

特征

  • 包括预编取自 7zip-bin (英语)
  • 在 Windows、 macOS 和 Linux 上工作
  • 电动软件
  • 包含全部类型脚本类型定义
  • 支持承诺和召回
  • 支持节点.js v10+

快速启动

npm install 7zip-min
import _7z from '7zip-min';

// Create an archive
await _7z.pack('myFolder', 'archive.7z');

// Extract an archive
await _7z.unpack('archive.7z', 'outputFolder');

// List archive contents
const files = await _7z.list('archive.7z');
console.log(files);

💡 提示 : 您也可以提取特定文件 unpackSome() 或运行自定义 7z 命令 cmd()见 API 方法 详细情况.

目录

支持的归档格式

根据 7-Zip 文档,7za支持:

7兹 • 妇女 兹玛 • 妇女 出租车 • 妇女 拉链 • 妇女 齐普 • 妇女 bzip2 键 • 妇女 页:1 • 妇女 沥青

支持的平台

平台建筑
窗口x86, x64 (英语)
马科斯苹果硅(arm64),英特尔(x64)
链接臂,臂64,ia32,x64

节点.js: v10 及以上
电子: 支持(见 电用 (见下文)

更多平台详情,请参见 7zip-bin (英语) 仓库.

导入

// ES6 Module syntax
import _7z from '7zip-min';

// Named imports also supported
import { unpack, pack, list, cmd, config, getConfig } from '7zip-min';

// or use CommonJS syntax, if you prefer
const _7z = require('7zip-min');

API 方法

所有方法返回 a Promise 并支持标准Node.js召回作为最后一个参数. "承诺"解决了7z命令的标准输出(stdout)(但 list() 返回一系列对象.

pack(pathToSrc, pathToArch, [callback])

从文件或目录创建归档.

参数:

  • pathToSrc (字符串):要压缩的文件或目录路径
  • pathToArch (字符串):要创建的归档路径
  • callback (功能,可选):节点回调功能

回返情况: 承诺 < string > - stdout of 7z 命令

await _7z.pack('path/to/dir', 'archive.7z');
await _7z.pack('path/to/file.txt', 'backup.zip');

unpack(pathToArch, [destPath], [callback])

提取归档到目的目录 .

参数:

  • pathToArch (字符串):归档文件的路径
  • destPath (弦,可选): 提取文件的地方( 默认为当前目录)
  • callback (功能,可选):节点回调功能

回返情况: 承诺 < string > - stdout of 7z 命令

// Unpack to specific directory
await _7z.unpack('archive.7z', 'output/folder');

// Unpack to current directory
await _7z.unpack('archive.zip');

unpackSome(pathToArch, filesToUnpack, [destPath], [callback])

从归档中提取特定文件或目录.

参数:

  • pathToArch (字符串):归档文件的路径
  • filesToUnpack (弦 [ ] : 用于提取的文件/目录名称或图案组
  • destPath (弦,可选): 提取文件的地方( 默认为当前目录)
  • callback (功能,可选):节点回调功能

回返情况: 承诺 < string > - stdout of 7z 命令

// Extract specific files to a directory
await _7z.unpackSome('archive.7z', ['file1.txt', 'dir1'], 'output');

// Extract with pattern to current directory
await _7z.unpackSome('archive.7z', ['*.txt']);

list(pathToArch, [callback])

列出一个归档的内容 .

参数:

  • pathToArch (字符串):归档文件的路径
  • callback (功能,可选):节点回调功能

回返情况: 承诺 < 列表项目[ ] > -- -- 归档中的项目阵列

每个 ListItem 对象具有以下属性:

  • name (字符串): [保证] 文件/目录路径( 始终存在)
  • size (弦,可选): 未压缩大小
  • compressed (弦,可选): 压缩大小
  • date (弦,可选): 修改日期
  • time (弦,可选): 修改时间
  • attr (弦,可选): 文件属性
  • crc (字符串,可选):CRC校验和
  • method (弦,可选): 压缩方法
  • encrypted (弦,可选): 加密状态

说明: 只有 name 保证财产的存在。 其他属性取决于归档格式和7z输出.

const items = await _7z.list('archive.7z');
items.forEach(item => {
  console.log(`${item.name}${item.size ? ` - ${item.size} bytes` : ''}`);
});

cmd(paramsArr, [callback])

使用自定义参数运行任意 7z 命令 。 这是一个低等方法,可以让你完全控制7z并返回原始命令输出.

参数:

  • paramsArr (弦 [ ] : 7z 命令行参数阵列
  • callback (功能,可选):节点回调功能

回返情况: 承诺 < string > - stdout of 7z 命令( raw 输出可以解析或处理)

// Custom compression with ultra settings
const output = await _7z.cmd(['a', '-mx=9', 'ultra.7z', 'folder']);
console.log(output); // Raw 7z output

// Test archive integrity and get detailed report
const testResult = await _7z.cmd(['t', 'archive.7z']);
if (testResult.includes('Everything is Ok')) {
  console.log('Archive is valid');
}

// Extract with password
await _7z.cmd(['x', 'protected.7z', '-pMyPassword', '-ooutput']);

配置

getConfig()

返回当前配置设置.

回返情况: 配置对象为:

  • binaryPath (字符串): 7za 二进制的当前路径
const config = _7z.getConfig();
console.log(`Using 7za binary at: ${config.binaryPath}`);

config(settings)

更新配置设置 .

参数:

  • settings (对象):配置对象
    • binaryPath (字符串,可选):自定义路径为 7za 二进制
// Use a custom 7za binary
_7z.config({
  binaryPath: '/custom/path/to/7za'
});

自定义二进制路径

有时您可能想要使用自定义路径去取取 7za 二进制 。 常用案例包括:

  • 电子软件: 当与自定义位置捆绑时
  • 自定义构建: 使用7za的特定版本
  • 非标准设施: 当 7za 安装在自定义位置时

使用 getConfig() 财务报告和审定财务报表 config() 用于获取或设置二进制路径。 详情见 106号。 。 。 .

实例

处理输出

从 7z 命令中抓取标准输出用于记录或分析 :

const stdout = await _7z.pack('myFolder', 'archive.7z'); 
console.log(stdout); // Prints 7z command output

替代语法

所有方法都与标准的Node.js调用兼容并 .then() 链条 :

回调样式 :

_7z.unpack('archive.7z', 'output', (err, output) => {
  if (err) return console.error(err);
  console.log('Unpacked!', output);
});

承诺样式 :

_7z.list('archive.7z')
  .then(list => console.log(list))
  .catch(err => console.error(err));

电用

这个包裹与Electron合作. 软件包在 Electron app 内部运行时自动检测,并调整二进制路径 app.asar 改为 app.asar.unpacked。 。 。 .

使用时 electron-builder,您需要确保 7za 二进制从 .asar 档案中解开 asarUnpack 选项 :

{
  "build": {
    "asarUnpack": [
      "node_modules/7zip-bin/**/*"
    ]
  }
}

也可以设置自定义二进制路径, 如果您喜欢用不同方式捆绑二进制:

_7z.config({
  binaryPath: '/custom/path/to/7za'
});

处理错误

当操作失败时,所有方法都会抛出出错误(或传出错误回调). 错误对象是一个扩展对象 Error 与 额外属性 :

  • message: 错误消息
  • stderr: 7z的标准出错输出
  • stdout: 7z的标准输出(如果有的话)
  • code: 从 7z 进程退出代码
try {
  await _7z.unpack('nonexistent.7z');
} catch (err) {
  console.error('Error message:', err.message);
  console.log('Exit code', err.code);
  console.error('Standard error:', err.stderr);
  console.error('Standard output:', err.stdout);
}

另见

版本与发布记录

7zip-min 共发布 24 个版本,首次发布于 2018/09/27;过去 12 个月发布了 2 个版本。

版本发布日期距今
3.0.1latest2026/03/028 个月前
3.0.02026/02/258 个月前
2.1.02025/04/121.6 年前
2.0.02025/01/231.8 年前
1.4.52024/07/242 年前
1.4.42023/02/013 年前

关于 7zip-min 的常见问题

7zip-min 是什么?

独立的跨平台拉链/ 有7za的unzip

如何安装 7zip-min?

在项目目录运行 npm install 7zip-min,或使用 pnpm add / yarn add / bun add。

7zip-min 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

7zip-min 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

7zip-min 可以商用吗?

7zip-min 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

7zip-min 的下载量有多少?

根据 npm 官方下载统计,7zip-min 在 2026/10/04 – 2026/11/02 这 30 天内被下载 146,567 次,日均约 4,886 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

7zip-min 还在维护吗?

最新版本 3.0.1 发布于 2026/03/02(8 个月前);至今共发布 24 个版本,其中过去 12 个月发布了 2 个;首次发布于 2018/09/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。