Без плагіна, без фреймворку, без хука бандлера. Передайте 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=40AFTERPACK_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 бачить лише файли.
Далі
- Фреймворки: повна таблиця.
- Довідник CLI: усі наведені вище прапорці повністю.
- Збірки та CI: сіди, dev проти продакшну, просування тих самих байтів.
- Protection Map: як читати звіт.
- Конфігурація: кожен параметр і те, через що його можна задати.
- Пресети: шкала з п'яти рівнів.