工具

debundle JavaScript 打包文件拆包工具

Node.js 命令行工具,可把 Browserify 或 Webpack 生成的 JavaScript 打包文件还原为按模块拆分的文件树,便于逐个文件阅读,而不必面对一整个脚本。JSON 配置文件指定打包类型、入口模块,以及可选的 knownPaths(把数字模块 ID 映射为输出文件或 node_modules 中的包路径);它还能以内联或变量方式改写被压缩工具重命名的 require 标识符,使输出可重新打包或在 Node 中运行。README 称该工具是作者为一个逆向工程项目了解打包结构而编写的,并指出拆包是有损的:无法恢复 package.json 设置和 Webpack 模块名称,压缩过的代码拆出后仍是压缩状态。

目标
网站
类别
网站分析工具
关联
基础工具
来源复核于

使用条件与局限

  • README 称这是一个已不再维护的研究项目,在实验环境中大多能正常工作,但处理真实环境中的打包文件时经常失败。所审阅的 master 提交日期为 2018-06-16;npm 上 debundle 的最新版本是 2017-09-12 发布的 0.5.4,比仓库的 v0.5.3 标签和 package.json 中的版本更新;未完成的 v2 分支最后更新于 2020 年。
  • 通过 npm i -g debundle 安装,运行方式为 debundle -i <打包文件> -o <输出目录> -c <配置文件>。package.json 要求 Node 6 及以上,.nvmrc 和 Travis CI 配置使用 Node 6,依赖也是同一时期的版本,如 acorn 4 和 recast 0.5;本次未检查它在当前 Node 版本上的表现。
  • 只能解析 Browserify 打包文件,以及以数组形式传入模块的 Webpack 打包文件:模块列表不是数组时 Webpack 解码器会中止;其他打包工具未获官方支持,但可用 moduleAst 选项指向布局相同的模块列表。除非在 knownPaths 中指定名称,Webpack 拆出的文件以模块 ID 命名。
  • test_bundles/ 目录包含四个小型示例打包文件及其配置和原始源码,CI 通过 test_bundles/run_test.sh 对它们执行拆包;与原始源码比对的部分已被注释掉,因此 CI 只检查拆包能否完成。待拆包的文件需由用户自备,README 的法律提示还提醒,部分服务条款禁止逆向工程。
  • package.json 和 npm 软件包声明采用 ISC 许可,但仓库没有许可证文件,GitHub 也未识别出许可证;src/extern/replace-method 是随附的 MIT 许可模块,作者为 Hugh Kennedy。本条目未对任何打包文件拆包,所审来源也未确立与 REA 的关联。

关于此条目

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · 1egoman/debundle · 修订 67531ff
  2. DOCS.md GitHub · 1egoman/debundle · 修订 67531ff
  3. package.json GitHub · 1egoman/debundle · 修订 67531ff
  4. .travis.yml GitHub · 1egoman/debundle · 修订 67531ff
  5. src/decoders/webpack.js GitHub · 1egoman/debundle · 修订 67531ff
  6. test_bundles GitHub · 1egoman/debundle · 修订 67531ff
  7. test_bundles/run_test.sh GitHub · 1egoman/debundle · 修订 67531ff
  8. src/extern/replace-method/LICENSE.md GitHub · 1egoman/debundle · 修订 67531ff
  9. https://www.npmjs.com/package/debundle/v/0.5.4

同分区更多条目:网站

网站分区全部 48 项资源