#typescript #javascript #graph #module #file-format #serialization #compact

eszip

一个可以下载 JavaScript 和 TypeScript 模块图并存储在特殊 zip 文件中的实用工具

107 个版本 (重大变更)

新功能 0.76.0 2024 年 8 月 22 日
0.74.0 2024 年 8 月 15 日
0.73.0 2024 年 7 月 31 日
0.64.2 2024 年 2 月 23 日
0.7.0 2021 年 3 月 31 日

解析器实现 中排名 247

Download history 1277/week @ 2024-05-02 1352/week @ 2024-05-09 1800/week @ 2024-05-16 1341/week @ 2024-05-23 1240/week @ 2024-05-30 982/week @ 2024-06-06 1271/week @ 2024-06-13 1398/week @ 2024-06-20 994/week @ 2024-06-27 1054/week @ 2024-07-04 1063/week @ 2024-07-11 645/week @ 2024-07-18 1165/week @ 2024-07-25 914/week @ 2024-08-01 1014/week @ 2024-08-08 936/week @ 2024-08-15

每月下载量 4,127
9 个 crate 中使用 (直接使用 8 个)

使用 MIT 许可证

175KB
4.5K SLoC

Rust 4K SLoC // 0.0% comments TypeScript 537 SLoC // 0.1% comments TSX 15 SLoC JavaScript 5 SLoC

eszip

eszip 格式允许您无损地将 ECMAScript 模块图(由 deno_graph::ModuleGraph 表示)序列化成一个单一的压缩文件。

eszip 文件格式旨在紧凑且支持流式传输。这使得高效加载大型 ECMAScript 模块图成为可能。

https://eszip-viewer.deno.dev/ 是一个用于检查 eszip 文件的工具。

示例

创建 eszip

cargo run --example eszip_builder https://deno.land/std/http/file_server.ts file_server.eszip2

查看 eszip 的内容

cargo run --example eszip_viewer file_server.eszip2

将 eszip 加载到 V8

cargo run --example eszip_load file_server.eszip2 https://deno.land/std/http/file_server.ts

文件格式

文件格式如下所示

Eszip:
| Magic (8) | Header size (4) | Header (n) | Header hash (32) | Sources size (4) | Sources (n) | SourceMaps size (4) | SourceMaps (n) |

Header:
( | Specifier size (4) | Specifier (n) | Entry type (1) | Entry (n) | )*

Entry (redirect):
| Specifier size (4) | Specifier (n) |

Entry (module):
| Source offset (4) | Source size (4) | SourceMap offset (4) | SourceMap size (4) | Module type (1) |

Sources:
( | Source (n) | Hash (32) | )*

SourceMaps:
( | SourceMap (n) | Hash (32) | )*

对于空的源代码/源代码映射条目,有一个优化。如果偏移量和大小都设置为 0,则该模块的数据部分中不包含条目和哈希。

开发

在提交 PR 时,请确保通过运行以下命令重新构建 Wasm:

deno task build

依赖项

~20–32MB
~545K SLoC