logo
0
0
WeChat Login
chore(version): 更新版本号至1.0.1

XCLI

XCLI 是一个智能项目配置生成工具,能够自动识别项目类型并生成相应的开发配置文件。

功能特性

  • 自动项目类型探测:支持 Go、Vue、React 等多种项目类型
  • 一键配置生成:根据项目类型自动生成常用的配置文件
  • 约定优于配置:模板采用自动发现机制,无需手动注册
  • 安全覆盖策略:文件已存在时自动跳过,避免覆盖现有配置

支持的项目类型

项目类型识别依据生成的配置文件
Go存在 go.modMakefile
Vuepackage.json 中包含 "vue".eslintrc.js, prettier.config.js
Reactpackage.json 中包含 "react".eslintrc.js, prettier.config.js

安装

go build -o xcli main.go

使用方法

在项目根目录下执行:

./xcli

工具会自动检测项目类型并生成相应的配置文件。

项目结构

.
├── main.go                      # 程序入口
├── go.mod                       # Go 模块定义
├── pkg/
│   ├── detector/
│   │   └── detector.go          # 项目类型探测器
│   ├── generator/
│   │   ├── generator.go         # 生成器接口定义
│   │   ├── factory.go           # 工厂模式:生成器创建
│   │   ├── templates.go         # 模板处理逻辑
│   │   ├── go_generator.go      # Go 项目生成器
│   │   ├── vue_generator.go     # Vue 项目生成器
│   │   ├── react_generator.go   # React 项目生成器
│   │   └── templates/           # 模板文件目录
│   │       ├── go/
│   │       │   └── Makefile.tmpl
│   │       ├── vue/
│   │       │   ├── eslintrc.js.tmpl
│   │       │   └── prettier.config.js.tmpl
│   │       └── react/
│   │           ├── eslintrc.js.tmpl
│   │           └── prettier.config.js.tmpl
│   └── utils/
│       └── file_utils.go        # 文件工具函数
└── README.md

架构设计

策略模式 + 工厂模式

项目采用策略模式定义生成器接口,通过工厂模式根据项目类型创建对应的生成器实例:

┌─────────────┐     ┌─────────────┐     ┌─────────────────┐
│  Detector   │────▶│   Factory   │────▶│   Generator     │
│  (探测类型)  │     │  (创建生成器) │     │  (执行生成逻辑)  │
└─────────────┘     └─────────────┘     └─────────────────┘
                                              │
                                              ▼
                                        ┌─────────────┐
                                        │  Templates  │
                                        │ (嵌入的模板) │
                                        └─────────────┘

模板自动发现机制

模板文件存放在 pkg/generator/templates/ 目录下,按项目类型分子目录存放:

  • 模板文件使用 .tmpl 后缀
  • 通过 //go:embed 指令嵌入到可执行文件中
  • 运行时自动遍历目录,移除 .tmpl 后缀后生成目标文件

开发指南

添加新的项目类型支持

  1. pkg/detector/detector.go 中添加新的项目类型常量
  2. Detect() 函数中添加识别逻辑
  3. pkg/generator/ 下创建对应的生成器(如 xxx_generator.go
  4. pkg/generator/factory.go 中注册生成器
  5. pkg/generator/templates/ 下创建模板目录和模板文件

示例:添加 Node.js 项目支持

detector.go:

const (
    // ...
    TypeNode    ProjectType = "NODE"
)

func Detect() ProjectType {
    // ...
    if utils.FileExists("package.json") {
        return TypeNode
    }
}

node_generator.go:

type NodeGenerator struct{}

func (n *NodeGenerator) Generate() error {
    fmt.Println("🚀 正在为 Node.js 项目生成常用配置...")
    return GenerateFromDir("node")
}

factory.go:

case detector.TypeNode:
    return &NodeGenerator{}

许可证

MIT

About

XCLI 是一个智能项目配置生成工具,能够自动识别项目类型并生成相应的开发配置文件

Language
Go100%