今天介绍一个让我眼前一亮的脚手架工具 —— 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

适用场景

  • 组件库开发:快速生成组件、样式、测试文件三件套
  • 微服务脚手架:统一服务目录结构和基础配置
  • 项目初始化:团队标准化的新项目模板
  • 代码规范落地:把最佳实践固化成可复用的模板

对比传统方案

工具模板语法学习成本可读性
YeomanEJS/Handlebars一般
PlopHandlebars一般
HygenEJS一般
scaffdogMarkdown极低极佳

小结

scaffdog 不是什么改变世界的工具,但它把「代码生成」这件事做到了足够简单、足够优雅。

如果你厌倦了在 EJS 模板里写 <%= %>,或者团队成员总是搞不清脚手架的配置逻辑,不妨试试用 Markdown 来定义模板。

有时候,最好的工具就是那个不让你思考「工具怎么用」的工具。