scaffdog:用 Markdown 写模板,让脚手架优雅起来
今天介绍一个让我眼前一亮的脚手架工具 —— scaffdog。
761⭐ 的小众项目,却解决了一个真实痛点:怎么让代码生成这件事变得优雅、可维护、还不用学一套新的模板语法。
什么是 scaffdog?
scaffdog 是一个 Markdown 驱动的脚手架工具。
核心思想很简单:用 Markdown 文件定义模板,用 CLI 命令生成代码。没有复杂的模板引擎,没有晦涩的语法,只有你最熟悉的 Markdown。
GitHub: https://github.com/scaffdog/scaffdog
为什么选它?
1. Markdown 原生支持
模板文件就是 Markdown,这意味着:
- 语法高亮开箱即用
- 在 GitHub 上直接可阅读
- 写文档和写模板是同一件事
2. 变量系统简单直观
---
name: Component
root: './src/components'
---
# {{ inputs.name }}
生成 {{ inputs.name }} 组件...
YAML frontmatter 定义元数据,{{ inputs.xxx }} 插值变量,就这么简单。
3. 文件生成语法优雅
一个 Markdown 文件可以生成多个文件:
# `{{ inputs.name }}.tsx`
```tsx
import React from 'react';
export const {{ inputs.name }}: React.FC = () => {
return <div>{{ inputs.name }} Component</div>;
};
{{ inputs.name }}.test.tsx
import { {{ inputs.name }} } from './{{ inputs.name }}';
describe('{{ inputs.name }}', () => {
it('should render', () => {
// test code
});
});
一级标题用反引号包裹文件名,代码块里写内容,scaffdog 自动解析生成对应文件。
## 快速上手
```bash
# 安装
npm install -g scaffdog
# 初始化配置
npx scaffdog init
# 创建模板
npx scaffdog create component
# 使用模板生成代码
npx scaffdog generate component
适用场景
- 组件库开发:快速生成组件、样式、测试文件三件套
- 微服务脚手架:统一服务目录结构和基础配置
- 项目初始化:团队标准化的新项目模板
- 代码规范落地:把最佳实践固化成可复用的模板
对比传统方案
| 工具 | 模板语法 | 学习成本 | 可读性 |
|---|---|---|---|
| Yeoman | EJS/Handlebars | 中 | 一般 |
| Plop | Handlebars | 中 | 一般 |
| Hygen | EJS | 中 | 一般 |
| scaffdog | Markdown | 极低 | 极佳 |
小结
scaffdog 不是什么改变世界的工具,但它把「代码生成」这件事做到了足够简单、足够优雅。
如果你厌倦了在 EJS 模板里写 <%= %>,或者团队成员总是搞不清脚手架的配置逻辑,不妨试试用 Markdown 来定义模板。
有时候,最好的工具就是那个不让你思考「工具怎么用」的工具。