@ electron- 内部/ extract- zip
[尖叫声] 电子工程内部. 这个包是用来为Electron服务的 拥有工具。 不支持非电子包的使用: API 可能 更改以适应 Electron 的需要, 错误报告或功能请求 可在不采取行动的情况下结束外部使用案件。 需要一般用途时 提取器, 使用
extract-zip。 。 。 .
快速,安全,本土的拉链提取为Node.js. 空投替换 extract-zip。 。 。 .
- 土著:rust core通过N-API,去压会流出事件回路.
- 快点: ~2x在输入重档案上速度快,永不慢. 见 基准。 。 。 .
- 保险:对Zip Slip进行硬化,并联出逃,绝对路径,NUL注入,Windows保留名和zip炸弹.
- 零运行时间: 无
debug编号 :yauzl编号 :get-stream在你的树上. - 跨平台: 为macOS,Linux(glibc/musl)和Windows(x64/arm64)预建的二进制.
安装
yarn add @electron-internal/extract-zip
使用量
仅限无害环境管理:
import extract from '@electron-internal/extract-zip';
await extract('archive.zip', { dir: '/absolute/output/path' });
dir (需要,绝对)是唯一的选择. 其它东西都是固定的: 存在的
文件是覆盖的,归档模式比特(被放大到 0o777时间是
保存后,共通链接被创建(在Windows上滑行而无共通链接权限),,
和书写平行 min(cpus, 8) 工人们。 原创的
onEntry, (中文(简体) ), defaultDirMode,以及 defaultFileMode 不支持,因为没有
消费者 electron org使用它们.
警卫
这个包是硬化的 用于提取信任的 Electron 分布档案,
执行针对 Zip Slip 、 symlink 逃生、 绝对路径、 NUL 的路径控制
注射、Windows保留名称和拉链炸弹。 它的威胁模式和完整的
封存保障清单载于 SECURITY.md。 。 。 .
提取未经信任或核实的档案已超出范围——见
SECURITY.md 详细情况.
基准
yarn bench (Apple M系列,节点24,中位数5):
| 企业 | 缩放大小 | extract-zip (日语) | 这个 | 加速 |
|---|---|---|---|---|
| 电子-v42.2.0-darwin-arm64 | 112 甲基溴 | 817分钟 | 441分钟 | 1.9x (中文(简体) ) |
| 8 x 4 MB 可压缩 | 0.1 甲基溴 | 24分钟 | 3分钟 | 9.4x (中文(简体) ) |
| 2000 个小文本文件 | 0.4 溴化二苯乙烯 | 372分钟 | 199分钟 | 1.9x (中文(简体) ) |
| 200个不可压缩文件 | 6.2 甲基溴 | 40分钟 | 22分钟 | 1.8x (中文) |
node_modules | 2.9 甲基溴 | 68分钟 | 37分钟 | 1.9x (中文(简体) ) |
采掘工作分阶段进行:验证路径并创建目录、增量和 与 zlib-ng 并行写入文件,然后应用同义链接和目录 元数据。 Electron number 由它唯一的182 MB 框架 二进制入门, 不能再分开了.
分发
一个包件船, 全部预建的二进制 (~ 2 MB gziped): macOS
darwin-universal窗口 x64编号 :arm64,和 Linux 键 x64编号 :arm64 用于两个 glibc
和穆斯尔. binding.js 在负载时间选择正确的一个。 没有
optionalDependencies,没有邮站,没有安装网络.
从源头建楼
需要一个 Rust 工具链(和 cmake 用于zlib-ng).
yarn install
yarn build # builds index.<your-platform>.node
yarn test
释放
释放是由 语义释放
在每次推动 main: 常规承诺消息决定版本凸起,
CI 构建所有目标, 脂肪包通过信任发布到 npm
出版。 没有手动版本的凸起或标记.
许可证
麻省理工学院