
Esta es una herramienta creada para desempacar los paquetes de JavaScript provocados por Webpack y Browserify.
Este fue un proyecto de investigación que ya no se mantiene . Construí para ayudarme a entender cómo se fruncen los paquetes de JavaScript. Funciona en un entorno labratorio la mayor parte del tiempo, pero a menudo falla en los paquetes de JavaScript del mundo real. Ha pasado un tiempo desde que trabajé en este proyecto, así que si te encuentras con problemas, es posible que realmente no pueda ayudarte tanto.
Las razones varían, pero esta herramienta se desarrolló originalmente para ayudarme con un proyecto de ingeniería inversa. No hace falta decir que examinar los paquetes minificados para tratar de descubrir cómo funciona un servicio no es divertido y es mucho más fácil cuando ese paquete se divide en archivos y esos archivos tienen nombres semánticos.
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": {}
}
(Para desacreditar un simple paquete webpack, reemplace browserify la configuración anterior con webpack )
Una configuración puede tener una serie de indicadores: están documentados en docs.md.
No. Hay un montón de metadatos que se pierden cuando se agrupan:
package.json para cada node_module y el paquete root.1.js ) a menos que se anule manualmente.No oficialmente. Sin embargo, si un paquete comparte el mismo diseño del módulo de tipo que Browserify o Webpack, puede ser posible establecer la opción de configuración de Moduleast para apuntar a la ubicación de los módulos.
npm install , eso debería ser../src/index.js (¡así es como lo ejecutas!)test_bundles/ . Un script, test_bundles/run_test.sh puede ejecutar el debundador contra un paquete dado e intentar desacreditarlo en dist/ . (CI hará, como parte de las pruebas de ejecución, desacreditará todos los paquetes en esa carpeta).npm testAlgunas compañías especifican en sus términos de servicio que su código no puede ser "ingeniería inversa". El debundido definitivamente puede (dependiendo de cómo esté usando el código) caer en ese paraguas. ¿Entiende lo que está haciendo para que no rompa ningún acuerdos?