Обфускація JavaScript для вашого фреймворку

Який пакет встановити для вашого стеку, куди він підключається і що записує.

AfterPack обфускує JavaScript, який видав ваш бандлер. Встановіть пакет для свого стеку, і ваша звичайна збірка видаватиме обфускований результат. Для всього іншого запустіть npx afterpack@latest на результаті збірки.

Таблиця фреймворків

ФреймворкПакетЯк підключитиДе працюєРезультат збірки
Next.js@afterpack/nextwithAfterpack(config)runAfterProductionCompile, усередині next build, після того як Next запише чанки.next/static/chunks, out/
Vite@afterpack/viteafterpackVite() у pluginsgenerateBundle, у конвеєріbuild.outDir
Webpack@afterpack/webpacknew AfterpackWebpackPlugin()compilation.hooks.processAssets, у конвеєріoutput.path
Rollup@afterpack/rollupafterpackRollup() у pluginsgenerateBundle, у конвеєріoutput.dir або output.file
esbuild@afterpack/esbuildafterpackEsbuild() у pluginsonEnd, після того як esbuild запише файлиoutdir або outfile
Astro@afterpack/astroafterpack() в integrations@afterpack/vite у конфігурації Vite від Astrodist/
Svelte@afterpack/svelteafterpackSvelte() у plugins@afterpack/vitedist/
SvelteKit@afterpack/sveltekitafterpackSveltekit() після sveltekit()@afterpack/viteрезультат адаптера (build/)
Vue 3@afterpack/vueafterpackVue() після vue()@afterpack/vitedist/
Nuxt 3@afterpack/nuxtmodules: ["@afterpack/nuxt"]@afterpack/vite у конфігурації Vite від Nuxt.output/public/_nuxt/
Angular v17+@afterpack/angularafterpackAngular() у postbuild-скриптіокремий прохід після збірки, після того як ng build запише файлиdist/<app>/browser
Electron@afterpack/electronwithAfterpack(config) навколо electron-vite@afterpack/vite на всіх трьох частинах, один сідout/ кожної частини
Parcel@afterpack/parcel-optimizerзапис в optimizers у .parcelrcOptimizer Parcel 2, для кожного бандла, у конвеєріdistDir Parcel

Astro, Svelte, SvelteKit, Vue, Nuxt і Angular встановлюють @afterpack/vite або запускають той самий спільний прохід, тож підключати його вручну не потрібно.

Без плагіна

СтекШлях
Remix / React Router v7Збирається на Vite: використовуйте @afterpack/vite або CLI.
Звичайний JSНемає бандлера, до якого можна підключитися: npx afterpack@latest <dir>.

Що робить кожна інтеграція

Поведінка за замовчуванням описана у Швидкому старті. Крім неї, кожен плагін і CLI мають спільну поведінку:

  • Режим збірки визначається автоматично. NODE_ENV=production або CI=true обирає продакшн, що вимикає видачу source map. Опублікована карта зводить обфускацію нанівець.
  • Ті самі артефакти. Одна об'єднана protectionMap.html у внесеному до gitignore .afterpack/ і .map поруч із кожним файлом, коли карти увімкнено. .afterpack/ має власний .gitignore; ваш ніколи не редагується. build.backup має дві форми: CLI на кожному запуску віддзеркалює ваші оригінали в .afterpack/backup/, а плагін, який обфускує файли на диску (@afterpack/next, @afterpack/esbuild, @afterpack/angular), на ваш запит записує сусідній файл .backup.<hash> поруч із результатом. Плагіни, що працюють у конвеєрі, не мають записаного файлу, поруч із яким могла б лежати резервна копія, і попереджають, якщо ви її запитуєте.
  • Один перемикач, щоб пропустити запуск. build.autorun: false залишає плагін встановленим і пропускає рушій.
  • Директиви зчитуються плагіном із вашого вихідного коду — у кожній інтеграції, яка має хук, звідки їх можна зчитати. Angular відхиляє цей ключ повністю: його збирач закритий, тож прохід бачить лише вже мініфікований результат. CLI відхиляє цей ключ з тієї самої причини.

Далі