瓦卡魯(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的攻擊目標的使用是非法的。遵守所有適用的地方,州和聯邦法律是最終用戶的責任。開發人員不承擔任何責任,也不對該計劃造成的任何濫用或損害負責。
麻省理工學院