Застосунки Svelte компілюються в JavaScript через Vite, а AfterPack інтегрується на рівні бандлера, тож @afterpack/svelte є тонкою обгорткою: afterpackSvelte(options) — це і є afterpackVite(options), лише з назвою, яку легко знайти в проєкті Svelte.
Збираєте повноцінний застосунок SvelteKit? Використовуйте @afterpack/sveltekit. Збираєте бібліотеку компонентів Svelte через Rollup? Використовуйте @afterpack/rollup.
Встановлення
$ npm install -D @afterpack/svelte// vite.config.ts
import { defineConfig } from "vite";
import { svelte } from "@sveltejs/vite-plugin-svelte";
import { afterpackSvelte } from "@afterpack/svelte";
export default defineConfig({
plugins: [svelte(), afterpackSvelte()],
});Розмістіть його після svelte(). Іменований експорт — afterpackSvelte; пакет також реекспортує afterpackVite і тип AfterpackViteOptions.
Збірка
Тепер vite build видає обфускований результат. vite dev не зачіпається, бо плагін працює лише на етапі generateBundle збірки, до того як Vite запише бандл.
Перевірка
afterpackSvelte({ protectionMap: { enabled: true } });Записує об'єднану Protection Map у внесений до gitignore .afterpack/protectionMap.html. Побічний ефект для source map і правила поводження з ним ті самі, що й у @afterpack/vite.
entitlements.js, 54 lines, built at the light preset with a directive around the signature check. Click any token to see what was applied to it.Параметри
Будь-який ключ конфігурації можна передати тут в об'єкті параметрів; він без змін передається в @afterpack/vite. Псевдонім типу AfterpackSvelteOptions дорівнює AfterpackViteOptions.
afterpackSvelte({ seed: "git", preset: "medium" });Директиви
Маркер /* @afterpack … */ усередині файлу .svelte не зчитується. Натомість розмістіть директиви у звичайному модулі .ts/.js, який імпортує компонент:
// src/lib/license.ts
/* @afterpack preset=hard */
export function verify(token: string) {
// ...
}
/* @afterpack end */Кожен виданий чанк обфускується в будь-якому разі; звичайний модуль потрібен лише для директиви.
Далі
- Фреймворки: повна таблиця.
- Vite: плагін, який виконує всю роботу.
- SvelteKit: пакет-обгортка для Kit.
- Protection Map: як читати звіт.
- Збірки та CI: сіди, dev проти продакшну, просування тих самих байтів.