回到笔记
为什么我把三个站放在一个仓库里
monorepo、override 模式,以及那一小撮让一群站点"看起来像一家公司"却不用 fork 设计系统的决定。
monorepo 这个决定不是理念驱动的。它是回答一个具体问题:怎么让企业站、实验室、个人站看起来是一家人,而又不用把设计 token 复制三遍(因为复制三遍一定会漂移)?
天真答案是"一个 CSS 文件被三个站 import"。问题在于三个站的声音不一样。企业站要像一家英国有限公司。实验室要像一个集市。个人站要像一个人。你没法用一个 accent 色服务三个。
解法是 override 模式。共享包定义全部 token。每个站有一个小 override.css,把需要变的 token 重新声明。共享组件读 token,不硬编码颜色,所以它们会自己换皮。结果是:family DNA 单一源、三站各有自己的 accent / 圆角 / 调性。
让它成立的那个 trick:硬编码颜色的组件没有资格进共享包。读 token 的组件才有。这个硬约束会拦下那些"不知不觉漂成三种稍微不同的绿"的事。
评论
评论区由 GitHub Discussions 驱动。点右上角 "Sign in" 用 GitHub 账号登录即可评论。