Wakaru est le décompilateur JavaScript pour le frontend moderne. Il ramène le code d'origine à partir d'une source groupée et transpirée.
Voir la démo en direct pour des exemples détaillés.
Convertit le code transpilé à sa forme lisible et restaure les syntaxes dégradés.
Prend en charge les transpiles suivantes:
Lisez la documentation pour plus d'informations.
Convertit JavaScript groupé en modules séparés
Soutient les bundlers suivants:
Testez l'outil et voyez-le en action sur Playground.
Par défaut, la CLI s'exécutera en mode interactif et vous guidera dans le processus.
Vous pouvez également transmettre des options pour sauter quelques étapes en mode interactif.
npx @wakaru/cli
# or
pnpm dlx @wakaru/cli Exécutez npx @wakaru/cli --help pour voir la liste complète des options.
| Option | Défaut | Description |
|---|---|---|
--output | "out" | Répertoire de sortie |
--force | false | Répertoire de sortie de l'écrasement de force |
--concurrency | 1 | Spécifique le nombre de tâches simultanées |
--perf | false | Afficher les mesures de performance |
--perf-output | Répertoire de sortie de métriques de performance |
--concurrency peut être utilisée pour accélérer le processus. Mais je suis conscient que le processus pourrait être ooM si le fichier d'entrée est trop grand.
Si vous souhaitez exécuter la CLI en mode non interactif, vous pouvez spécifier la fonctionnalité en faisant passer le nom de la fonctionnalité comme premier argument.
unpacker et unminify exécuteront uniquement la fonction correspondante.
all fonctionneront à la fois unpacker et unminify .
npx @wakaru/cli all <files...> [options]
npx @wakaru/cli unpacker <files...> [options]
npx @wakaru/cli unminify <files...> [options]
Ces options ne sont disponibles que dans all les mode.
| Option | Défaut | Description |
|---|---|---|
--unpacker-output | "out/unpack" | Regarder le répertoire de sortie de déballage |
--unminify-output | "out/unminify" | Remplacer le répertoire de sortie non mi-minif |
Lors de l'exécution d'une seule fonctionnalité ( unpacker ou unminify ), la CLI n'utilisera que le chemin spécifié dans l'option --output . Cela signifie que, contrairement à all le mode où les sous-répertoires ( out/unpack et out/unminify ) sont automatiquement créés dans le répertoire de sortie, en mode fonction unique, les fichiers de sortie sont placés directement dans le répertoire spécifié --output sans sous-répertoire supplémentaire.
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 ) ;Vous pouvez vérifier toutes les règles sur /unminify/src/transformations/index.ts.
Je suis conscient que ce projet est encore en début de développement. L'API pourrait changer à l'avenir.
Et la taille du bundle de ces forfaits est énorme. Il pourrait être réduit à l'avenir. Utilisez avec prudence sur le navigateur (oui, comme le terrain de jeu, il peut fonctionner sur le navigateur).
L'utilisation de wakaru pour attaquer des cibles sans consentement mutuel préalable est illégale. Il est de la responsabilité de l'utilisateur final d'obéir à toutes les lois locales, étatiques et fédérales applicables. Les développeurs n'assument aucune responsabilité et ne sont pas responsables de toute utilisation abusive ou dommage causée par ce programme.
Mit