Обфускація звичайного JavaScript

Спрямуйте npx afterpack@latest на будь-який каталог зі згенерованим JavaScript. Не потрібні ні бандлер, ні плагін, ні файл конфігурації.

Без плагіна, без фреймворку, без хука бандлера. Передайте CLI каталог, і він обфускує кожен .js, .mjs і .cjs у ньому, на місці. Використовуйте це для зібраного вручну бандла для CDN, дерева виводу tsc, чистого ESM, застосунку на require.js/AMD або будь-якого dist/ від інструмента, для якого немає пакета AfterPack.

Встановлення

Встановлювати нічого не потрібно: запустіть CLI безпосередньо на своєму каталозі виводу.

$ npx afterpack@latest

Збірка

Шлях необов'язковий. Без нього CLI вибирає найновіший з dist/, build/, out/, .output/ і .next/ у робочому каталозі й повідомляє, який саме вибрав; вкажіть каталог явно, якщо результат збірки лежить деінде, а також у CI. Команда приймає каталог для обходу або один файл .js/.mjs/.cjs. Якщо каталог не існує або в ньому немає .js/.mjs/.cjs, CLI про це повідомляє і завершується з кодом 1.

Якщо ж вона помітить у вашому package.json next, vite, webpack, rollup або esbuild, то після запуску друкує однорядкову підказку про відповідний плагін.

Кожен ключ описано на сторінці Конфігурація. На цьому шляху ключ задають у afterpack.json у корені проєкту, прапорцем CLI або змінною середовища. Для complexity оберіть один варіант:

npx afterpack@latest dist/ --complexity=40
AFTERPACK_complexity=40 npx afterpack@latest dist/
{ "complexity": 40 }

Прапорці зі значенням приєднують його через = (--preset=hard, --seed=git); булевий прапорець без значення означає true, а =false вимикає його (--build.backup, --directives.enabled=false). -h/--help і -v/--version друкують довідку. Довідник CLI описує повну форму команди; Конфігурація описує кожен ключ. Код виходу 0 у разі успіху і 1 у разі будь-якої помилки. Інших кодів, на які можна було б розгалужуватися в CI, немає.

Запуск записує:

  • .afterpack/protectionMap.html: одну об'єднану мапу для запуску, яка записується, коли вдалося знайти source map і збірка не працює в CI (CI=true або CI=1). Продакшн-режим її не вимикає. Вона містить ваш оригінальний вихідний код, тому завжди потрапляє у внесений до gitignore .afterpack/, а ніколи не в каталог, який ви обфускували.
  • foo.js.map: сусідній файл .map, коли source map увімкнено.
  • .afterpack/backup/: ваші оригінали, віддзеркалені в корені проєкту разом із маніфестом, на кожному запуску. --build.backup=false вимикає це; npx afterpack@latest restore скасовує запуск за цією копією.

.afterpack/ має власний .gitignore, тож git його ігнорує; AfterPack ніколи не редагує ваш власний.

Перевірка

Увімкніть source map для збірки, яку хочете оглянути (tsc --sourceMap, прапорець бандлера), а потім відкрийте внесений до gitignore .afterpack/protectionMap.html. Він містить увесь ваш вихідний код. Ніколи не комітьте його і не роздавайте з сервера.

Параметри

Кожен ключ конфігурації працює і на цьому шляху; див. Конфігурація, де описано кожен ключ і кожне місце, де його можна задати.

Директиви

CLI не зчитує директиви: він працює на зібраному результаті, де коментарів уже немає, і відхиляє directives.enabled. Щоб застосувати їх, використовуйте плагін для фреймворку. Див. Директиви.

Особливі випадки

  • Немає source map — менше видно. Без знайденої карти Protection Map не має оригінального вихідного коду для відображення, і звіт запуску виходить бідним. Якщо ваша збірка може видавати source map (tsc --sourceMap, прапорець бандлера), увімкніть їх для збірки, яку хочете оглянути, а потім не допускайте їх у реліз.
  • Нічого не знає про фреймворки. AfterPack бачить лише файли.

Далі