1. 项目缘起与核心定位
1.1 从"impeccable"这个词说起
第一次看到"impeccable"作为项目名,我脑子里蹦出来的不是词典释义,而是一个很具体的画面:前端代码评审时,有人指着一段样式说"这里差 2px",然后整个团队为了这 2px 折腾一下午。impeccable 这个词本身就带着一种近乎偏执的追求——无懈可击、挑不出毛病。把它放在 AI coding agents 和 frontend design 的语境里,意思就很明确了:这是一个想让 AI 写出来的前端代码达到"挑不出毛病"程度的工具。
我接触过不少号称能"自动写前端"的方案,大多数停留在"能跑就行"的水平。生成一个按钮、一个卡片、一个表单,看起来像那么回事,但你真把它放进项目里,间距不统一、颜色不遵循设计系统、响应式断点乱写、无障碍属性缺失,最后还得人工返工。impeccable 想解决的恰恰是这个断层——不是让 AI 能写前端,而是让 AI 写出来的前端经得起推敲。
从热搜词组合来看,impeccable 的形态大概率是一个 CLI 工具,同时可能配套 browser extension。这个判断基于几个信号:热搜里 cli、codex cli、zcode cli、trae cli 这些词密集出现,说明当前开发者对命令行形态的 AI 编程工具接受度很高;而 browser extension 的出现,暗示它可能需要浏览器环境来做视觉验证或实时预览。这两者结合,指向一个很清晰的产品逻辑:在命令行里驱动 AI 生成前端代码,在浏览器里验证生成结果是否真的"impeccable"。
1.2 它到底解决什么问题
我先把问题拆开说。前端开发里,"代码能跑"和"代码 impeccable"之间隔着好几道坎:
第一道坎是设计一致性。AI 生成代码时,如果没有明确的设计约束,它会自由发挥。这次生成用margin: 16px,下次用margin: 1rem,再下次用margin: 0.5em。单看每一处都没错,合在一起就是灾难。impeccable 需要做的,是把设计 token 体系强加给 AI 的输出。
第二道坎是响应式逻辑。很多 AI 生成的前端代码,桌面端看着还行,一到移动端就崩。断点设置随意、容器查询缺失、流式布局没考虑,这些问题在生成阶段不解决,后期改起来比重写还累。
第三道坎是可访问性。语义化标签、ARIA 属性、键盘导航、对比度,这些在"能跑就行"的标准下经常被忽略。但真正 impeccable 的前端,这些是底线。
第四道坎是代码风格统一。命名规范、文件组织、组件拆分粒度,AI 每次生成的风格可能都不一样。如果没有一个强约束,项目很快就会变成风格大杂烩。
impeccable 的核心价值,就是把这四道坎在生成阶段就填平。它不是又一个"AI 写代码"的工具,而是一个"AI 写出符合工程标准的前端代码"的约束系统。适合谁来用?我认为三类人最需要:一是独立开发者,没有设计团队兜底,需要工具帮他把关;二是小团队的前端负责人,想用 AI 提效但又怕代码质量失控;三是对前端工程化有追求的个人开发者,想看看 AI 在严格约束下能产出什么水平的东西。
1.3 为什么是 CLI + Browser Extension 这个组合
这里我要展开说一下形态选择背后的逻辑,因为理解了这个,你才能理解 impeccable 的设计哲学。
CLI 的优势在于可组合性和可自动化。你可以把 impeccable 嵌进现有的构建流程、CI/CD 管道、Git hooks 里。比如提交前自动跑一遍,检查 AI 生成的前端代码是否符合规范。这种"无侵入式"的集成能力,是 GUI 工具很难做到的。而且 CLI 天然适合和 codex cli、trae cli 这类工具协同——它们负责生成,impeccable 负责校验和修正。
Browser extension 的价值则在于视觉验证。前端代码的很多问题,静态分析是看不出来的。间距是否视觉平衡、颜色对比度是否达标、动效是否流畅、不同视口下的布局是否合理,这些必须渲染出来才能判断。Browser extension 可以实时抓取渲染结果,把视觉层面的问题反馈给 CLI,形成一个闭环。
这个组合的巧妙之处在于:CLI 负责"规则"和"逻辑",Browser extension 负责"感知"和"验证"。两者通过某种协议通信(可能是本地 WebSocket 或者文件系统),让 AI 生成的代码不仅通过静态检查,还能通过视觉检查。这才是"impeccable"的完整含义。
注意:如果你之前只用过纯 CLI 的 AI 编程工具,第一次接触这种"CLI + 浏览器扩展"的组合可能会觉得多此一举。但实际用下来你会发现,前端代码的质量问题有相当一部分是视觉层面的,纯静态工具根本覆盖不到。
2. 核心机制拆解:impeccable 是怎么做到"挑不出毛病"的
2.1 设计约束的注入方式
impeccable 要让 AI 生成的前端代码符合规范,第一步就是把自己的约束"注入"到 AI 的生成过程中。这里有好几种可能的实现路径,我结合常见实践来分析。
最直接的方式是系统提示词注入。impeccable 在调用底层 AI 模型时,会在系统提示里塞入一套完整的设计规范:颜色 token、间距刻度、字体层级、断点定义、组件命名规则等。这种方式的好处是通用性强,不依赖特定模型;缺点是提示词长度有限,规范太复杂时会被截断。
更可靠的方式是结构化配置文件 + 提示词组合。impeccable 读取项目根目录下的配置文件(可能是impeccable.config.json或类似形式),把设计规范结构化存储,然后在生成时动态拼接到提示词里。这样规范可以很详细,而且能随项目变化而调整。
还有一种更激进的方式是后处理校验 + 自动修正。AI 先生成代码,impeccable 再用一套规则引擎去检查,发现不符合规范的地方自动改写。比如检测到margin: 16px不在间距刻度上,就自动替换成最接近的合法值。这种方式对 AI 的依赖最小,但规则引擎的复杂度会很高。
我推测 impeccable 大概率是第二种为主、第三种为辅的组合。因为纯提示词注入无法保证 100% 合规,必须有后处理兜底;而纯后处理又太僵硬,生成阶段就引导 AI 走对路效率更高。
2.2 视觉验证的技术实现
Browser extension 做视觉验证,核心要解决三个问题:怎么抓取渲染结果、怎么判断"好不好"、怎么把结果反馈回去。
抓取渲染结果相对成熟。Browser extension 可以通过 content script 注入到页面里,用getBoundingClientRect()获取元素位置和尺寸,用getComputedStyle()获取最终样式,用IntersectionObserver判断元素是否在视口内。如果需要更精确的视觉分析,还可以用html2canvas或原生Canvas API截图,然后做像素级对比。
判断"好不好"是难点。impeccable 需要一套视觉规则库,比如:
- 相邻元素的间距是否在允许的刻度范围内
- 文本颜色和背景色的对比度是否达到 WCAG 标准
- 同一层级的元素尺寸是否一致
- 响应式断点切换时布局是否合理
- 是否存在溢出、遮挡、错位等视觉缺陷
这些规则有些可以用数值精确判断(比如对比度),有些需要启发式算法(比如"视觉平衡")。impeccable 的规则库质量,直接决定了它的实用价值。
反馈回去的机制,我猜测是通过本地服务或者浏览器扩展的 native messaging 能力,把验证结果传给 CLI,CLI 再决定是提示用户、自动修正还是重新生成。
2.3 与现有 AI 编程工具的协同关系
从热搜词看,impeccable 不是要取代 codex cli、trae cli 这些工具,而是要和它们协同。这个定位很聪明,因为重新造一个 AI 编程工具的成本太高,而且用户已经有使用习惯了。
协同的方式可能有几种:
一种是作为插件/中间层。你在用 codex cli 生成前端代码时,impeccable 作为一个 hook 介入,在代码写入文件前做校验和修正。这种方式对用户透明,不需要改变工作流。
另一种是作为独立命令。你先生成代码,然后跑impeccable check或impeccable fix来校验和修正。这种方式更灵活,但多了一步操作。
还有一种是作为配置提供方。impeccable 管理设计规范,其他 AI 工具读取这些规范来生成代码。这种方式最轻量,但约束力也最弱。
我个人更看好第一种和第二种的组合:日常开发用 hook 自动校验,遇到复杂问题用独立命令深度检查。这样既保证了效率,又保留了灵活性。
实操心得:不管 impeccable 最终采用哪种协同方式,我建议你在项目初期就把设计规范配置文件建好。哪怕一开始只有颜色和间距,后面慢慢补。规范这东西,越早建立越省事,等到项目中期再补,改造成本会高得让你想放弃。
3. 从零上手:impeccable 的安装与基础配置
3.1 环境准备与安装步骤
假设 impeccable 是一个基于 Node.js 的 CLI 工具(这是当前最主流的形态),安装流程大概是这样:
# 全局安装 npm install -g impeccable-cli # 或者用 pnpm pnpm add -g impeccable-cli # 验证安装 impeccable --version如果你用的是其他包管理器,比如 yarn 或 bun,命令类似。安装完成后,第一次运行impeccable init会在项目根目录生成配置文件。
Browser extension 的安装通常是通过浏览器的扩展商店,或者开发者模式下加载未打包的扩展。如果是后者,你需要克隆仓库、构建、然后在chrome://extensions里加载dist目录。
这里有个细节要注意:CLI 和 browser extension 需要建立通信。常见的方式是 CLI 启动一个本地 WebSocket 服务,extension 连接上来。所以你可能需要确保本地某个端口没有被占用。impeccable 的配置文件里应该会有端口设置项。
3.2 配置文件详解
配置文件是 impeccable 的核心。我根据常见实践推测一个配置结构:
{ "designTokens": { "colors": { "primary": "#2563eb", "secondary": "#64748b", "background": "#ffffff", "text": "#1e293b" }, "spacing": [0, 4, 8, 12, 16, 24, 32, 48, 64], "fontSizes": [12, 14, 16, 18, 24, 32, 48], "borderRadius": [0, 4, 8, 12, 16, 9999], "breakpoints": { "sm": 640, "md": 768, "lg": 1024, "xl": 1280 } }, "rules": { "enforceSpacingScale": true, "enforceColorTokens": true, "requireSemanticHtml": true, "minContrastRatio": 4.5, "maxNestingDepth": 4 }, "ai": { "provider": "openai", "model": "gpt-4", "temperature": 0.2 }, "browser": { "port": 3456, "autoLaunch": true } }这个配置里,designTokens定义了项目的设计系统,rules定义了校验规则,ai定义了底层模型参数,browser定义了扩展通信设置。
间距刻度我用了 4 的倍数,这是最常见的选择。为什么是 4 而不是 5 或 8?因为 4 的倍数在大多数屏幕上能整除,不会产生半像素;同时 4 的粒度足够细,能表达大多数间距需求。8 的倍数太粗,12 的倍数又不够灵活。当然这不是绝对的,如果你的项目有特殊需求,可以调整。
对比度阈值 4.5 是 WCAG AA 级标准。如果你追求 AAA 级,可以设成 7。但要注意,对比度要求越高,可选的颜色组合越少,设计自由度会受限。我一般建议正文用 4.5,大号文字用 3。
3.3 与现有项目的集成
如果你是在一个已有项目里引入 impeccable,集成策略要分情况讨论。
对于新项目,直接impeccable init然后按提示配置就行。建议一开始就把设计 token 定好,后面所有 AI 生成的代码都会遵循这套 token。
对于已有项目,情况复杂一些。你需要先梳理现有的设计系统,把颜色、间距、字体等提取成 token。这个过程可能很痛苦,特别是如果项目之前没有规范。我的建议是不要试图一次到位,先提取最常用的那部分,跑起来再说。
集成到构建流程里,可以在package.json里加脚本:
{ "scripts": { "impeccable:check": "impeccable check src/**/*.{tsx,jsx,vue}", "impeccable:fix": "impeccable fix src/**/*.{tsx,jsx,vue}", "precommit": "impeccable check --staged" } }--staged参数表示只检查暂存区的文件,这样提交前校验不会太慢。
注意:如果你用的是 Git hooks 工具(比如 husky),可以把 impeccable 挂到 pre-commit 钩子上。但要注意,如果校验失败会阻止提交,团队里可能会有人觉得烦。建议初期先用 warning 模式,等大家适应了再改成 error 模式。
4. 实操全流程:用 impeccable 生成一个符合规范的前端组件
4.1 从需求描述到代码生成
我拿一个实际场景来演示:生成一个"用户卡片"组件,要求包含头像、姓名、职位、关注按钮,响应式布局,支持暗色模式。
第一步,用自然语言描述需求:
impeccable generate "创建一个用户卡片组件,包含圆形头像、姓名、职位、关注按钮。桌面端横向布局,移动端纵向布局。支持暗色模式。"impeccable 会做几件事:解析需求、读取配置文件里的设计 token、调用 AI 模型生成代码、用规则引擎校验、如果有问题自动修正或提示。
生成的代码大概长这样(以 React + Tailwind 为例):
interface UserCardProps { avatar: string; name: string; role: string; onFollow: () => void; } export function UserCard({ avatar, name, role, onFollow }: UserCardProps) { return ( <article className="flex flex-col items-center gap-4 rounded-lg bg-white p-6 shadow-sm dark:bg-slate-800 md:flex-row md:items-start"> <img src={avatar} alt={`${name}的头像`} className="h-16 w-16 rounded-full object-cover" /> <div className="flex flex-1 flex-col gap-1 text-center md:text-left"> <h3 className="text-lg font-semibold text-slate-900 dark:text-slate-100"> {name} </h3> <p className="text-sm text-slate-500 dark:text-slate-400">{role}</p> </div> <button onClick={onFollow} className="rounded-md bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2" > 关注 </button> </article> ); }这段代码里,你能看到 impeccable 的约束在起作用:间距用的是 4 的倍数(gap-4、p-6、gap-1),颜色用的是 token 化的类名(slate、blue),语义化标签(article、h3),无障碍属性(alt、focus ring),响应式断点(md:)。
4.2 视觉验证环节
代码生成后,impeccable 的 browser extension 会介入。它会启动一个预览页面,把组件渲染出来,然后做视觉检查。
检查项包括:
- 头像是否真的是圆形(border-radius 是否足够大)
- 桌面端和移动端的布局切换是否在正确的断点
- 暗色模式下文字对比度是否达标
- 按钮的点击区域是否足够大(至少 44x44px)
- 焦点状态是否可见
如果发现问题,extension 会把结果反馈给 CLI,CLI 决定是自动修正还是提示用户。比如检测到暗色模式下文字对比度只有 3.8,低于 4.5 的阈值,impeccable 可能会自动把dark:text-slate-400改成dark:text-slate-300。
这个闭环是 impeccable 区别于普通 AI 编程工具的关键。普通工具生成完就结束了,impeccable 会验证、修正、再验证,直到通过。
4.3 参数调优与个性化
impeccable 的默认配置不一定适合所有项目。你需要根据实际情况调优。
间距刻度:如果你的设计系统用的是 8 的倍数,就把spacing改成[0, 8, 16, 24, 32, 48, 64, 96]。但要注意,8 的倍数在移动端可能太粗,有些紧凑布局需要 4 的粒度。我的建议是保留 4 的倍数,但在规则里限制小间距的使用场景。
颜色 token:不要直接用 Tailwind 的默认色板,而是定义自己的语义化 token。比如primary、secondary、danger、success,而不是blue-600、red-500。这样换主题时只需要改 token 定义,不用改组件代码。
AI 温度:temperature参数控制生成的随机性。前端代码建议设低一点,0.1 到 0.3 之间。太高会生成风格不一致的代码,太低又可能陷入固定模式。我一般用 0.2。
校验严格度:初期建议用warning模式,只提示不阻止。等团队适应了,再改成error模式。如果项目很成熟,可以开启strict模式,连命名规范都强制检查。
实操心得:调参这件事没有标准答案,我的经验是"从宽到严"。一开始规则太严,AI 生成的代码频繁被拒,你会觉得工具不好用。先从最核心的几条规则开始(间距、颜色、对比度),跑顺了再逐步加规则。这样学习曲线平缓,团队接受度也高。
5. 常见问题与排查技巧实录
5.1 生成代码不符合预期怎么办
这是最常见的问题。AI 生成的代码和你想要的差距很大,可能的原因有几个:
需求描述太模糊。你说"做一个漂亮的卡片",AI 不知道"漂亮"是什么标准。改成"做一个圆角 8px、有阴影、内边距 24px 的卡片",生成结果会准确得多。impeccable 虽然会注入设计规范,但需求本身的明确性还是很重要。
设计 token 不完整。如果你的配置文件里只定义了颜色,没定义间距,AI 在间距上就会自由发挥。检查一下 token 是否覆盖了所有你关心的维度。
模型能力不足。如果你用的是较小的模型,生成复杂组件时可能会力不从心。可以试试换更大的模型,或者把复杂组件拆成多个简单组件分别生成。
规则冲突。有时候你的规则之间会打架。比如你要求"所有间距必须是 4 的倍数",但又要求"卡片内边距是 20px",20 不是 4 的倍数,就会冲突。检查规则是否有矛盾。
排查步骤我一般是这样:先看 impeccable 的日志,确认它读到了哪些 token、应用了哪些规则;然后手动跑一次生成,看原始输出是什么;最后对比期望和实际,定位是需求问题、配置问题还是模型问题。
5.2 Browser extension 连接失败
CLI 和 extension 连不上,通常有几个原因:
端口被占用。检查配置文件里的端口是否被其他程序占了。可以用lsof -i :3456(macOS/Linux)或netstat -ano | findstr 3456(Windows)查看。
扩展没加载。确认扩展已经在浏览器里启用,并且有权限访问本地服务。有些浏览器需要手动允许扩展访问 localhost。
防火墙拦截。本地回环通信一般不会被防火墙拦,但某些安全软件可能会。临时关闭试试。
版本不匹配。CLI 和 extension 的版本差异太大时,通信协议可能不兼容。确保两者版本一致。
如果排查不出来,可以看 CLI 的日志和浏览器扩展的控制台输出。通常错误信息会告诉你具体哪里出了问题。
5.3 性能问题与优化
impeccable 跑得慢,可能的原因:
校验规则太多。每条规则都要遍历 AST 或渲染结果,规则多了自然慢。可以按需开启规则,不用的关掉。
文件太多。如果你对整个项目跑校验,文件多了会很慢。建议只校验改动的文件,用--staged或--changed参数。
AI 调用频繁。每次生成都要调 AI,如果网络慢或模型响应慢,整体就慢。可以考虑缓存生成结果,相同需求不重复生成。
Browser extension 渲染慢。如果组件很复杂,渲染和视觉分析会耗时。可以限制只对关键组件做视觉验证,其他组件只做静态检查。
优化思路就是"按需":只校验改动的、只检查关键的、只生成必要的。不要追求全量校验,那样性价比太低。
5.4 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 生成代码风格不一致 | 温度参数太高 | 查看配置文件 ai.temperature | 降到 0.1-0.3 |
| 间距不符合规范 | 间距 token 未定义 | 检查 designTokens.spacing | 补全 token 定义 |
| 暗色模式对比度不足 | 对比度规则未开启 | 检查 rules.minContrastRatio | 开启并设阈值 4.5 |
| Extension 连接超时 | 端口被占用 | lsof/netstat 查端口 | 换端口或释放占用 |
| 校验速度慢 | 规则太多或文件太多 | 看日志耗时分布 | 按需开启规则,只校验改动文件 |
| 生成结果与需求偏差大 | 需求描述模糊 | 对比需求和输出 | 细化需求描述 |
| 规则冲突导致频繁报错 | 规则之间矛盾 | 逐条禁用规则测试 | 调整规则使其兼容 |
| 组件拆分不合理 | 未定义拆分规则 | 检查是否有组件粒度规则 | 添加组件大小/职责规则 |
注意:这张表里的解决方案都是基于常见实践的推测,实际使用时以 impeccable 的官方文档为准。但排查思路是通用的:先定位问题类型(配置、连接、性能、生成质量),再针对性解决。
6. 进阶玩法:把 impeccable 嵌入团队工作流
6.1 与代码评审流程的结合
impeccable 最有价值的用法之一,是在代码评审前自动跑一遍。这样评审者不用花时间在格式和规范问题上,可以专注于逻辑和架构。
具体做法是在 CI 里加一个步骤:
# .github/workflows/impeccable.yml name: Impeccable Check on: [pull_request] jobs: check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: 18 - run: npm install -g impeccable-cli - run: impeccable check --changed --reporter=github--reporter=github会把问题以 GitHub 评论的形式贴到 PR 上,评审者一眼就能看到哪些地方不符合规范。
这个流程的好处是"自动化把关"。人总有疏忽的时候,工具不会。而且规范是客观的,避免了评审时的主观争论。
6.2 设计系统的持续同步
impeccable 的配置文件应该和设计系统保持同步。如果设计团队更新了颜色 token,配置文件也要跟着改。手动同步容易遗漏,可以做成自动化。
一种方式是把设计 token 存在一个中心化的地方(比如 Figma 的 design tokens 插件导出 JSON),然后 impeccable 的配置文件从这个 JSON 生成。这样设计一改,配置文件自动更新。
另一种方式是用 Git 子模块或 npm 包管理设计 token。设计团队发一个@company/design-tokens包,impeccable 的配置引用这个包。版本更新时,所有项目统一升级。
这两种方式各有优劣。中心化 JSON 简单直接,但需要手动触发同步;npm 包管理更工程化,但流程更重。小团队用前者,大团队用后者。
6.3 多项目共享配置
如果你有多个项目,不想每个都配一遍,可以做一个共享配置包。
# 创建共享配置包 mkdir impeccable-config-shared cd impeccable-config-shared npm init -y # 编辑 index.js 导出配置然后在各项目的impeccable.config.js里:
const shared = require('impeccable-config-shared'); module.exports = { ...shared, // 项目特定覆盖 designTokens: { ...shared.designTokens, colors: { ...shared.designTokens.colors, primary: '#你的项目主色' } } };这样公共规则在共享包里维护,项目特定的覆盖在各自项目里。改公共规则时,所有项目一起生效。
实操心得:共享配置包一定要版本化。不要用
latest,而是锁定具体版本。否则共享包一改,所有项目突然报错,你会被追着问。我一般用^1.2.0这种范围,小版本自动升级,大版本手动确认。
7. 我对 impeccable 这类工具的判断
7.1 它改变了什么
impeccable 这类工具的出现,标志着 AI 编程从"能生成"进入"生成得好"的阶段。早期的 AI 编程工具,核心指标是"能不能跑";现在的工具,核心指标变成了"符不符合工程标准"。
这个转变的意义很大。它意味着 AI 不再只是一个"代码打字机",而是一个"懂工程的协作者"。它知道什么是好的间距、什么是达标的对比度、什么是合理的组件拆分。这些知识以前只存在于资深工程师的脑子里,现在被固化成了工具规则。
对个人开发者来说,这意味着你即使没有设计团队、没有前端架构师,也能产出质量不错的前端代码。对小团队来说,这意味着可以用更少的人维护更高的代码质量。
7.2 它的局限
但我也要泼点冷水。impeccable 能保证的是"符合规范",不是"设计得好"。规范是底线,不是上限。一个符合所有规范的组件,可能依然平庸、没有创意、不解决实际问题。
而且规范本身是需要人来定的。impeccable 不会告诉你"间距应该是 4 的倍数",它只是执行你定的规则。如果你的规则本身有问题,impeccable 只会帮你把问题执行得更彻底。
还有一点,视觉验证虽然强大,但依然有局限。它能检查对比度、间距、对齐,但检查不了"这个设计是否优雅"、"这个交互是否 intuitive"。这些需要人的判断。
所以我的看法是:impeccable 是一个强大的"质量守门员",但不是"设计决策者"。它帮你把该做的做到位,但做什么、为什么做,还是得你来定。
7.3 后续可以怎么扩展
如果 impeccable 继续演进,我觉得有几个方向值得关注:
一是更智能的规则推荐。根据你的项目类型和现有代码,自动推荐合适的规则配置。比如检测到你在做电商网站,推荐一套适合电商的设计 token。
二是跨框架支持。目前可能只支持 React 或 Vue,未来如果能覆盖 Svelte、Solid、Angular,适用面会更广。
三是与设计工具的深度集成。直接从 Figma 读取设计稿,生成符合设计稿的代码,并验证还原度。这是很多团队的痛点。
四是团队协作功能。比如规则配置的版本管理、团队共享的规则库、评审记录等。让 impeccable 从一个工具变成一个平台。
这些方向不一定都会实现,但代表了这类工具的可能演进路径。作为使用者,保持关注就好。
最后分享一个我自己的小技巧:用 impeccable 的时候,不要一上来就追求完美配置。先跑起来,用默认配置生成几个组件,看看效果。然后根据实际遇到的问题,一条一条加规则。这样你对每条规则的作用有直观感受,配置出来的东西也更贴合实际需求。一上来就抄一套复杂的配置,你根本不知道每条规则在干什么,出了问题也无从排查。工具是拿来用的,不是拿来供的。