7zip-min (英语)
最小跨平台包/外包装(和任何命令) 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-bin (英语) - 预编7za二进制
- 7-齐普 - 7-Zip官方网站
- 命令行版本用户指南 - 7z命令行文件