白标 SaaS 源码交付:真裁剪必须做对的几件事
By make1day
「白标」写在落地页上很容易,真正交付却意外地难。当 ZIP 本身就是商品时,有四件事必须成立。
1. 裁剪是真的,不是一个 feature flag
未选中的模块应当从压缩包里消失,而不是靠 env 开关禁用。客户取消了管理员后台,就不该收到它的路由、导航项或 import。本项目用声明式裁剪清单,每个生成包都做类型检查,CI 会下载并编译 18 组代表性配置。
一条踩过坑的规则:改写步骤只能修改 ZIP 里已经存在的文件。早期版本会回退到磁盘读取被剪掉的文件,悄悄把它们重新塞回客户包。
2. 品牌清理要覆盖生成的页面
客户构建里的首页、定价、sitemap、robots、法律页都由客户自己的配置生成,而不是继承本站的营销页。曾经连生成模板里一句带旧品牌词的注释都能打挂整个矩阵。现在断言会扫描客户页面的品牌词、竞品名、死链与生成器文件。
3. 不要把工厂一起打包
ZIP 里是商品,不是造商品的机器。生成器目录、builder 路由、generate 接口都会被移除。买一份 = 拿到一次生成的项目,不是获得运行工厂的许可。
4. 门禁不能跟着客户回家
本站发出源码 ZIP 前要求 HMAC 授权码、有效订阅或邮箱认领,且即使签名密钥没配,生产环境也恒开门禁。客户工程里这道门禁在源码层面默认关闭——不只是写在 .env.example 里,因为没人会照抄示例。匿名访客仍能拿无源码预览:文件清单 + 设计令牌,用签名访客令牌与双桶额度限流。
自己动手验
解压后搜索厂商品牌、生成器目录,以及任何指向不存在路由的链接;再在解压目录里跑类型检查与生产构建。任何一项失败,白标就只是营销话术。
FAQ
生成的 ZIP 里含生成器本身吗?+
不含。生成器模块、builder 页面、generate 接口都会被剪掉。买一份构建 = 拿到一个项目,不是拿到生产构建的工厂。
下载到的工程里门禁是开着的吗?+
不是。客户的 lib/env.ts 会被改写,让 licenseGateMode() 在源码里默认关闭。只有本站执行这道门禁,并且生产环境失败即关闭放行。
匿名预览包里有什么?+
无源码的包:该配置的完整文件清单、设计令牌与说明用的 PREVIEW.md,不含源码文件。额度由签名访客令牌与可信网络双桶共同限制。
All frequently asked questions · Markdown version (for AI agents)