Обфускація застосунку Remix

Пакета @afterpack/remix немає. Remix збирається через Vite, тож використовуйте @afterpack/vite або запустіть CLI на результаті збірки.

Окремого пакета для Remix немає

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, який знаходить у каталозі, на який ви його вказали.

Далі