
Ceci est un outil conçu pour déballer les bundles JavaScript répartis par WebPack et Browserify.
Il s'agissait d'un projet de recherche qui n'est plus maintenu . J'ai construit pour m'aider à comprendre comment les faisceaux JavaScript sont étouffés. Il fonctionne dans un environnement labratoire la plupart du temps, mais échoue souvent sur les faisceaux JavaScript du monde réel. Cela fait un moment que je n'ai pas travaillé sur ce projet, donc si vous rencontrez des problèmes, je ne pourrais pas vraiment vous aider.
Les raisons varient, mais cet outil a été initialement développé pour m'aider avec un projet d'ingénierie inverse. Inutile de dire que le crible à travers les faisceaux minifiés pour essayer de comprendre comment un service ne fonctionne pas n'est pas amusant et est beaucoup plus facile lorsque ce bundle est divisé en fichiers et que ces fichiers ont des noms sémantiques.
npm i -g debundle
$ debundle
Usage: debundle [input file] {OPTIONS}
Options:
--input, -i Bundle to debundle
--output, -o Directory to debundle code into.
--config, -c Configuration file
$ curl https://raw.githubusercontent.com/1egoman/debundle/master/test_bundles/browserify/bundle.js > bundle.js
$ curl https://raw.githubusercontent.com/1egoman/debundle/master/test_bundles/browserify/debundle.config.json > debundle.config.json
$ cat debundle.config.json
{
" type " : " browserify " ,
" knownPaths " : {}
}
$ debundle -i bundle.js -o dist/ -c debundle.config.json
$ tree dist/
dist/
├── index.js
└── node_modules
├── number
│ └── index.js
└── uuid
├── index.js
├── lib
│ ├── bytesToUuid.js
│ └── rng.js
├── v1.js
└── v4.js
4 directories, 7 files {
"type": "browserify",
"entryPoint": 1,
"knownPaths": {}
}
(Pour démystifier un simple bundle WebPack, remplacez la configuration browserify ci-dessus par webpack )
Une configuration peut avoir un certain nombre de drapeaux - ils sont documentés dans docs.md.
Non
package.json personnalisés pour chaque node_module et le package racine.1.js .Pas officiellement. Cependant, si un bundle partage la même disposition du module de type que Browserify ou WebPack, il peut être possible de définir l'option de configuration de la module de module pour pointer à l'emplacement des modules.
npm install - ce devrait être le cas../src/index.js (c'est comme ça que vous l'exécutez!)test_bundles/ . Un script, test_bundles/run_test.sh peut exécuter le débundler contre un bundle donné et essayer de le dégonfler dans dist/ . (CI, dans le cadre des tests d'exécution, sera démystifié tous les faisceaux de ce dossier.)npm testCertaines entreprises spécifient dans leurs conditions d'utilisation que leur code ne peut pas être "inversé". Le débundling peut certainement (selon la façon dont vous utilisez le code) dans ce parapluie. Comprenez ce que vous faites pour ne pas casser les accords?