用编码智能体开始粘贴到 Claude Code、Codex、Cursor 或 Copilot
选择你的框架
Next.js@afterpack/nextVite@afterpack/viteWebpack@afterpack/webpackRollup@afterpack/rollupesbuild@afterpack/esbuildAstro@afterpack/astroSvelte@afterpack/svelteSvelteKit@afterpack/sveltekitVue 3@afterpack/vueNuxt 3@afterpack/nuxtAngular v17+@afterpack/angularElectron@afterpack/electronParcel@afterpack/parcel-optimizerAnything elsenpx afterpack@latest
默认构建会做什么
light预设:复杂度为 5。字符串字面量会被编码,标识符会被重命名,语法会被重写,不添加任何结构层。当项目需要更强的保护时再提高预设;参见预设。- 每次构建使用一个新的随机种子,因此同一份源代码的两次构建在结构上互不相同。只构建一次,并将同一份字节提升到各个环境;只有在需要可复现输出时才固定
seed: "git"。 - **开发构建不受影响。**插件只作用于生产构建。
- **失败即中止。**引擎无法混淆的文件会让构建失败,并报出该文件的名称。参见退出码。
若要保留插件但在某一次运行中跳过引擎,将 build.autorun 设为 false。
检查结果
Protection Map 是你的原始源代码,按每个词元经历了多少变换着色。在 CI 之外,当打包工具输出了 source map 时,它会被写入 .afterpack/protectionMap.html;每篇框架指南都说明了如何开启。这份报告包含你的完整源代码。切勿提交或对外提供它。.afterpack/ 自带一个 .gitignore,因此 git 会忽略它。
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.打开在线演示报告,在第一次构建之前先看看它的样子。
对特定代码施加更强的保护
全局混淆覆盖整个 bundle。要对某一区域加强保护,或让某一区域保持原样,用指令标记它:
/* @afterpack preset=hard */
function checkLicense(token: string) {
return verify(token);
}
/* @afterpack end */
const apiKey = /* @afterpack preset=extreme */ "YOUR_SECRET";指令在 Pro 构建上生效;指令一页是语法以及所有可设置键的参考。
下一步
- AfterPack 的工作原理:攻击者能恢复什么,不能恢复什么。
- 配置:每一个选项以及在哪里设置。
- 最佳实践:该标记什么、该放过什么,以及 CI。