Wakaru adalah dekompiler JavaScript untuk Frontend Modern. Ini membawa kembali kode asli dari sumber yang dibundel dan ditranspilasi.
Lihat demo langsung untuk contoh terperinci.
Konversi kode yang ditranspilasi kembali ke bentuknya yang dapat dibaca dan mengembalikan sintaksis yang diturunkan.
Mendukung transpiler berikut:
Baca dokumentasi untuk informasi lebih lanjut.
Mengubah javascript yang dibundel menjadi modul terpisah
Mendukung bundler berikut:
Uji alat dan melihatnya beraksi di taman bermain.
Secara default, CLI akan berjalan dalam mode interaktif dan memandu Anda melalui proses.
Anda juga dapat melewati opsi untuk melewatkan beberapa langkah dalam mode interaktif.
npx @wakaru/cli
# or
pnpm dlx @wakaru/cli Jalankan npx @wakaru/cli --help untuk melihat daftar lengkap opsi.
| Pilihan | Bawaan | Keterangan |
|---|---|---|
--output | "out" | Direktori Output |
--force | false | Memaksa direktori output |
--concurrency | 1 | Spesifik jumlah tugas bersamaan |
--perf | false | Tunjukkan metrik kinerja |
--perf-output | Direktori Output Metrik Kinerja |
--concurrency dapat digunakan untuk mempercepat proses. Tapi tolong ketahui bahwa prosesnya mungkin oom jika file input terlalu besar.
Jika Anda ingin menjalankan CLI dalam mode non-interaktif, Anda dapat menentukan fitur dengan meneruskan nama fitur sebagai argumen pertama.
unpacker dan unminify hanya akan menjalankan fitur yang sesuai.
all akan menjalankan unpacker dan unminify secara berurutan.
npx @wakaru/cli all <files...> [options]
npx @wakaru/cli unpacker <files...> [options]
npx @wakaru/cli unminify <files...> [options]
Opsi ini hanya tersedia di all mode.
| Pilihan | Bawaan | Keterangan |
|---|---|---|
--unpacker-output | "out/unpack" | Mengesampingkan direktori output unpacker |
--unminify-output | "out/unminify" | Mengesampingkan direktori output yang tidak dikenali |
Saat menjalankan satu fitur (baik unpacker atau unminify ), CLI hanya akan menggunakan jalur yang ditentukan dalam opsi --output . Ini berarti bahwa, tidak seperti dalam mode all di mana subdirektori ( out/unpack dan out/unminify ) secara otomatis dibuat dalam direktori output, dalam mode fitur tunggal, file output ditempatkan langsung di direktori --output yang ditentukan tanpa subdirektori tambahan.
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 ) ;Anda dapat memeriksa semua aturan di /unminify/src/transformations/index.ts.
Harap diketahui bahwa proyek ini masih dalam pengembangan awal. API mungkin berubah di masa depan.
Dan ukuran bundel dari paket -paket ini sangat besar. Itu mungkin berkurang di masa depan. Gunakan dengan hati -hati di browser (ya, seperti taman bermain, dapat berjalan di browser).
Penggunaan wakaru untuk menyerang target tanpa persetujuan bersama sebelumnya adalah ilegal. Adalah tanggung jawab pengguna akhir untuk mematuhi semua undang -undang lokal, negara bagian dan federal yang berlaku. Pengembang tidak bertanggung jawab dan tidak bertanggung jawab atas penyalahgunaan atau kerusakan yang disebabkan oleh program ini.
Mit