AfterPack ofusca el JavaScript que produjo tu bundler. Instala el paquete de tu stack y tu build habitual emitirá salida ofuscada. Para cualquier otro caso, ejecuta npx afterpack@latest sobre la salida del build.
Matriz de frameworks
| Framework | Paquete | Cómo se conecta | Dónde se ejecuta | Salida del build |
|---|---|---|---|---|
| Next.js | @afterpack/next | withAfterpack(config) | runAfterProductionCompile, dentro de next build, después de que Next escriba los chunks | .next/static/chunks, out/ |
| Vite | @afterpack/vite | afterpackVite() en plugins | generateBundle, en el pipeline | build.outDir |
| Webpack | @afterpack/webpack | new AfterpackWebpackPlugin() | compilation.hooks.processAssets, en el pipeline | output.path |
| Rollup | @afterpack/rollup | afterpackRollup() en plugins | generateBundle, en el pipeline | output.dir o output.file |
| esbuild | @afterpack/esbuild | afterpackEsbuild() en plugins | onEnd, después de que esbuild escribe | outdir o outfile |
| Astro | @afterpack/astro | afterpack() en integrations | @afterpack/vite dentro de la configuración de Vite de Astro | dist/ |
| Svelte | @afterpack/svelte | afterpackSvelte() en plugins | @afterpack/vite | dist/ |
| SvelteKit | @afterpack/sveltekit | afterpackSveltekit() después de sveltekit() | @afterpack/vite | salida del adaptador (build/) |
| Vue 3 | @afterpack/vue | afterpackVue() después de vue() | @afterpack/vite | dist/ |
| Nuxt 3 | @afterpack/nuxt | modules: ["@afterpack/nuxt"] | @afterpack/vite sobre la configuración de Vite de Nuxt | .output/public/_nuxt/ |
| Angular v17+ | @afterpack/angular | afterpackAngular() en un script postbuild | una pasada postbuild, después de que ng build escribe | dist/<app>/browser |
| Electron | @afterpack/electron | withAfterpack(config) alrededor de electron-vite | @afterpack/vite en las tres partes, con una sola semilla | el out/ de cada parte |
| Parcel | @afterpack/parcel-optimizer | una entrada en optimizers de .parcelrc | un Optimizer de Parcel 2, por bundle, en el pipeline | el distDir de Parcel |
Astro, Svelte, SvelteKit, Vue, Nuxt y Angular instalan @afterpack/vite, o ejecutan la misma pasada compartida, así que no tienes que conectarlo a mano.
Sin plugin
| Stack | Ruta |
|---|---|
| Remix / React Router v7 | Se basa en Vite: usa @afterpack/vite o la CLI. |
| JS sin framework | No hay bundler en el que engancharse: npx afterpack@latest <dir>. |
Qué hace cada integración
Los valores por defecto están en el Inicio rápido. Además de esos, todos los plugins y la CLI comparten este comportamiento:
- Se detecta el modo de build.
NODE_ENV=productionoCI=trueselecciona producción, lo que desactiva la emisión de source maps. Un mapa publicado revierte la ofuscación. - Los mismos artefactos. Un único
protectionMap.htmlcombinado en.afterpack/, ignorado por git, y un.mapjunto a cada archivo cuando los mapas están activados..afterpack/lleva su propio.gitignore; el tuyo nunca se edita.build.backuptiene dos formas: la CLI replica tus originales en.afterpack/backup/en cada ejecución, y un plugin que ofusca archivos en disco (@afterpack/next,@afterpack/esbuild,@afterpack/angular) escribe un.backup.<hash>al lado de la salida cuando lo pides. Los plugins que actúan dentro del pipeline no tienen ningún archivo emitido junto al que dejar una copia de seguridad, y avisan cuando la pides. - Un solo interruptor para omitir una ejecución.
build.autorun: falsemantiene el plugin instalado y omite el motor. - El plugin lee las directivas de tu código fuente, en todas las integraciones que tienen un hook desde el que leerlas. Angular rechaza la clave directamente: su builder está sellado, así que la pasada solo ve salida ya minificada. La CLI la rechaza por la misma razón.
Siguiente
- Inicio rápido: elige un stack y compila.
- Builds y CI: semillas, desarrollo frente a producción, promocionar los mismos bytes.
- Configuración: cada opción y dónde establecerla.