AfterPack не публікує @afterpack/remix. Remix v2 і React Router v7 збираються через Vite, тож плагін для Vite — природний спосіб підключення, а CLI працює на результаті в будь-якому разі. Повну матрицю див. у Фреймворках.
Встановлення
Власний плагін Remix працює всередині вашого vite.config.ts, тож @afterpack/vite додається в той самий масив plugins, після нього:
$ npm install -D @afterpack/vite// vite.config.ts
import { defineConfig } from "vite";
import { vitePlugin as remix } from "@remix-run/dev";
import { afterpackVite } from "@afterpack/vite";
export default defineConfig({
plugins: [remix(), afterpackVite()],
});Або обійдіться без пакета і запустіть CLI на результаті збірки.
Збірка
Плагін працює на generateBundle і обфускує кожен JavaScript-чанк у бандлі, перш ніж Vite його запише. Remix збирає клієнтську і серверну частини як окремі збірки Vite, тож плагін запускається один раз для кожної частини, лише на її бандлі. Закріпіть один seed (seed: "git" — найпростіше), якщо обидві частини випускаються разом і ви хочете, щоб вони збиралися з одного сіду. Збірки та CI описують цей компроміс.
Збірка з CLI працює так само: спочатку зберіть, потім вкажіть AfterPack на кожен каталог виводу. Збірка Remix через Vite зазвичай записує build/client і build/server:
$ npx afterpack@latest build/client --seed=gitВкажіть каталог як аргумент шляху: без нього CLI вибирає найновіший з dist/, build/, out/, .output/ і .next/, а це не те, що вам потрібно, коли клієнтська й серверна збірки обфускуються окремо. Він приймає каталог для обходу або один файл .js/.mjs/.cjs. Запускайте його один раз для кожного каталогу, який хочете обфускувати, з однаковим --seed для обох, якщо вони випускаються разом. Обидва шляхи викликають той самий спільний прохід, тож усе інше (шкала пресетів, зупинка з помилкою (fail closed), артефакти) однакове.
Перевірка
Protection Map за замовчуванням записується, коли Vite видає source map і збірка не працює в CI (CI=true або CI=1); режим збірки її не вимикає. Vite не видає source map, якщо не задано build.sourcemap, тож увімкніть source map для збірки, яку хочете дослідити, а потім відкрийте .afterpack/protectionMap.html, внесений у gitignore. Він містить увесь ваш вихідний код. Ніколи не комітьте його і не роздавайте з сервера.
Параметри
Будь-який ключ конфігурації працює через цей плагін так само, як на сторінці Vite, включно зі збором директив; усі ключі див. у Конфігурації.
Директиви
Директиви зчитуються плагіном із вашого вихідного коду. CLI зчитує їх, коли його вхідні дані мають source map. Див. Директиви.
Особливі випадки
- Зупинка з помилкою (fail closed), без можливості перевизначення. Діагностика рівня
error/critical, порожній результат або файл, який рушій не зміг обфускувати, завершують збірку помилкою. - Серверний результат — це просто JavaScript. AfterPack обфускує будь-який
.js, який знаходить у каталозі, на який ви його вказали.
Далі
- Фреймворки: повна матриця.
- Vite: плагін, який рекомендує ця сторінка.
- Довідник CLI: повний список прапорців.
- Конфігурація: кожен параметр і де його можна задати.
- Пресети: шкала, за якою визначається
preset. - Збірки та CI: сіди, dev проти prod, просування тих самих байтів.
- Protection Map: як читати звіт.