开源

Packscope

将 JavaScript bundle 解包为真实可运行的模块

MIT许可证Node CLI技术栈webpack构建器rspack构建器rollup构建器esbuild构建器Vite构建器
git clone https://github.com/awareride/packscope.git cd packscope npm install # 解包本地 bundle npx packscope ./dist/app.js ./out # 或从 URL 解包 npx packscope https://example.com/app.js ./out

功能特性

Packscope 带给你什么

每个模块一个文件

每个 webpack/rspack 模块写入 modules/<id>.js。ES 模块分块放入 chunks/,原始源码放入 sources/。

默认即可执行

加载器用真实的 UMD 头与 webpack 运行时重建原始 bundle 形态,使解包后的树以相同方式运行。

编辑与重建

修改任意模块,然后运行 node out/rebuild.js bundle-edited.js 重新生成单个可运行 bundle。

从 URL 解包

传入 http:// 或 https:// URL。Packscope 会下载 bundle、解析分块,并将导入重写为本地路径。

清单与依赖图

manifest.json 包含模块 ID、体积、依赖边、推断名称与已下载资源,便于进一步分析。

可选的美化与重命名

使用 --beautify 与 --rename 获得可读输出。默认保留原始切片以保证可执行。

常见问题

常见问题解答

Packscope 支持哪些构建器?

webpack、rspack、rollup、esbuild 与 Vite —— 两大主流 bundle 家族,一个模块一个文件或一个分块一个文件。

解包后的树真的能运行吗?

能。加载器用真实的 UMD 头与 webpack 运行时逐字重建原始 bundle 形态,使解包后的树与原始 bundle 以相同方式运行。

我可以编辑模块并重建吗?

可以。修改任意模块文件,然后运行 node out/rebuild.js bundle-edited.js 重新生成单个可运行 bundle。

我为什么要把 bundle 解包?

审计实际发送给用户的内容、通过编辑模块调试线上问题、学习流行库的结构,或无需原始源码即可修补第三方 bundle。

Packscope 是一个 Node CLI,它把单个已发布的 JavaScript bundle 解包成可浏览、可执行的模块树。 生产环境的 bundle 是不透明的 —— 一个包含数千个压缩模块的 20 MB 文件。Packscope 为你提供 一个模块一个文件重建原始 bundle 形态的加载器,以及一个重建脚本,把你的修改 拼接回单个可运行的 bundle。

它支持两大主流 bundle 家族:

  • webpack 风格(webpack、rspack)—— 每个模块一个文件,位于 modules/<id>.js
  • ES 模块(rollup、esbuild、Vite)—— 每个分块一个文件,位于 chunks/<name>.js

用它来审计实际发送给用户的内容、调试仅线上出现的问题、学习流行 CLI 工具与库的结构,或在没有 原始源码的情况下修补第三方 bundle。

深入了解项目

阅读文档,或在 GitHub 上浏览源码。