Las apps de Vue 3 compilan con Vite, y AfterPack se integra a nivel de bundler, así que @afterpack/vue es un envoltorio muy ligero: afterpackVue(options) es afterpackVite(options), con un nombre pensado para que sea fácil de encontrar en un proyecto de Vue.
Los proyectos antiguos de Vue CLI compilan con webpack en lugar de Vite. En ellos usa @afterpack/webpack.
Instalación
$ npm install -D @afterpack/vue// vite.config.ts
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { afterpackVue } from "@afterpack/vue";
export default defineConfig({
plugins: [vue(), afterpackVue()],
});Colócalo después de vue(). La exportación con nombre es afterpackVue; el paquete también reexporta afterpackVite y el tipo AfterpackViteOptions.
Build
vite build emite ahora salida ofuscada. vite dev no se toca, porque el plugin solo se ejecuta en el generateBundle del build, antes de que Vite escriba el bundle.
Verificación
afterpackVue({ protectionMap: { enabled: true } });Escribe el Protection Map combinado en .afterpack/protectionMap.html, ignorado por git. El efecto secundario sobre los source maps y las reglas para manejarlos son los de @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.Opciones
Cualquier clave de configuración puede pasarse aquí en el objeto de opciones, que se reenvía tal cual a @afterpack/vite. El alias de tipo AfterpackVueOptions es AfterpackViteOptions.
afterpackVue({ seed: "git", preset: "medium" });Directivas
Un marcador /* @afterpack … */ dentro de un archivo .vue no se captura. Pon las directivas en un módulo .ts/.js normal que el componente importe:
// src/composables/useLicense.ts
/* @afterpack preset=hard */
export function verify(token: string) {
// ...
}
/* @afterpack end */Cada chunk emitido se ofusca de todos modos; solo la directiva necesita el módulo normal.
Siguiente
- Frameworks: la matriz completa.
- Vite: el plugin que hace el trabajo real.
- Nuxt: el módulo de Nuxt 3 sobre el mismo plugin.
- Protection Map: cómo leer el informe.
- Builds y CI: semillas, desarrollo frente a producción y promocionar los mismos bytes.