瓦卡鲁(Wakaru)是现代前端的JavaScript分解器。它从捆绑和转移的来源带回了原始代码。
有关详细示例,请参见实时演示。
将转移的代码转换回其可读形式,并恢复降级的语法。
支持以下转侧:
阅读文档以获取更多信息。
将捆绑的JavaScript转换为分离的模块
支持以下捆队:
测试该工具,并在操场上看到它。
默认情况下,CLI将在交互式模式下运行,并指导您完成整个过程。
您还可以通过选项在交互式模式下跳过一些步骤。
npx @wakaru/cli
# or
pnpm dlx @wakaru/cli运行npx @wakaru/cli --help查看选项的完整列表。
| 选项 | 默认 | 描述 |
|---|---|---|
--output | "out" | 输出目录 |
--force | false | 强制覆盖输出目录 |
--concurrency | 1 | 确定并发任务的数量 |
--perf | false | 显示性能指标 |
--perf-output | 性能指标输出目录 |
--concurrency可用于加快过程。但是,请意识到,如果输入文件太大,则可能会OOM。
如果要以非相互作用模式运行CLI,则可以通过将功能名称传递为第一个参数来指定功能。
unpacker和unminify仅运行相应的功能。
all将同时运行unpacker并顺序unminify 。
npx @wakaru/cli all <files...> [options]
npx @wakaru/cli unpacker <files...> [options]
npx @wakaru/cli unminify <files...> [options]
这些选项仅在all模式下可用。
| 选项 | 默认 | 描述 |
|---|---|---|
--unpacker-output | "out/unpack" | 覆盖拆卸器输出目录 |
--unminify-output | "out/unminify" | 覆盖未识别输出目录 |
在运行单个功能( unpacker或未unminify )时,CLI将仅使用--output选项中指定的路径。这意味着,与all模式不同,在输出目录中自动创建子目录( out/unpack和out/unminify )的所有模式不同,在单个功能模式下,输出文件直接放置在指定的--output输出目录中,而无需任何其他子目录。
npm install @wakaru/unpacker @wakaru/unminify
# or
pnpm install @wakaru/unpacker @wakaru/unminify
# or
yarn add @wakaru/unpacker @wakaru/unminify@wakaru/unpacker import { unpack } from '@wakaru/unpacker' ;
const { modules , moduleIdMapping } = await unpack ( sourceCode ) ;
for ( const mod of modules ) {
const filename = moduleIdMapping [ mod . id ] ?? `module- ${ mod . id } .js` ;
fs . writeFileSync ( outputPath , mod . code , 'utf-8' ) ;
}@wakaru/unminify import { runDefaultTransformationRules , runTransformationRules } from '@wakaru/unminify' ;
const file = {
source : '...' , // source code
path : '...' , // path to the file, used for advanced usecases. Can be empty.
}
// This function will apply all rules that are enabled by default.
const { code } = await runDefaultTransformationRules ( file ) ;
// You can also specify the rules to apply. Order matters.
const rules = [
'un-esm' ,
...
]
const { code } = await runTransformationRules ( file , rules ) ;您可以在/unminify/src/transformations/index.ts上检查所有规则。
请意识到该项目仍在早期开发中。 API将来可能会改变。
这些包装的捆绑包大小很大。将来可能会减少。在浏览器上谨慎使用(是的,就像操场一样,它可以在浏览器上运行)。
未经事先共同同意的未经wakaru的攻击目标的使用是非法的。遵守所有适用的地方,州和联邦法律是最终用户的责任。开发人员不承担任何责任,也不对该计划造成的任何滥用或损害负责。
麻省理工学院