🚀 一个项目模板管理工具,帮助你快速创建项目并管理自定义模板。支持从 Git 仓库拉取模板,智能化项目初始化,让开发更高效!
- 🎯 快速创建项目 - 一键从模板创建新项目
- 📦 灵活模板管理 - 支持添加、删除、导入、导出模板配置
- 🔗 Git 仓库支持 - 从 Git 仓库直接拉取模板
- 🛠️ 配置管理 - 完善的配置管理系统
- 📋 模板列表 - 直观的表格展示可用模板
- 🔄 批量导入 - 支持从 JSON 文件或 Git 模板仓库批量导入
- Node.js 版本:
>=18.0.0(必须) - Git 环境: 必须安装 Git 并配置好环境变量 (必须)
- 模板要求: 所有 Git 模板仓库地址必须是 开源的、可公开访问的
你可以使用以下任一包管理器进行全局安装:
# 使用 npm
npm install coderjc-cli -g
# 使用 pnpm
pnpm install coderjc-cli -g
# 使用 yarn
yarn global add coderjc-cli安装完成后,你可以使用 coderjc 或简写 cc 命令:
# 查看版本
cc --version
# 查看帮助
cc --help# 交互式创建项目(推荐)
cc create my-project
# 指定模板创建项目
cc create my-project --template koa-quick
# 强制覆盖同名目录
cc create my-project --force
# or
cc create my-project -fcc list# 查看所有配置
cc config
# 添加单个模板
cc config add templateList
# 从 Git 仓库导入单个模板
cc import --git https://github.com/your-username/your-template.git
# 从模板仓库批量导入
cc import --gits https://github.com/your-username/template-store.git从模板创建新项目,支持交互式选择或指定模板。
语法:
cc create <project-name> [options]参数:
<project-name>- 项目名称(必填)
选项:
-t, --template <template-name>- 指定模板名称-f, --force- 强制覆盖已存在的同名目录
使用示例:
# 交互式创建
cc create my-app
# 指定模板创建
cc create my-api --template koa-server-ts
# 强制覆盖创建
cc create my-app --force
# 组合使用
cc create my-app --template vue3-admin --force注意事项:
- 项目名称必须符合 npm 包命名规范
- 如果目录已存在且未使用
--force,会询问是否覆盖 - 创建成功后会自动修改
package.json中的项目名称
以表格形式展示所有可用的项目模板。
语法:
cc list输出示例:
┌──────────────────────────────────────────────────────────────────────────────┐
│ 可用模板列表 │
├──────────────────┬────────────────────────────────────────┬─────────────────┤
│ 模板名称 │ 模板描述 │ 是否模板仓库 │
├──────────────────┼────────────────────────────────────────┼─────────────────┤
│ koa-quick │ 一个非常简单的koa项目模板 │ 是 │
│ koa-server-js │ 用于开发的koa服务器模板(JS) │ 是 │
│ koa-server-ts │ 用于开发的koa服务器模板(TS) │ 是 │
│ vue3-admin │ Vue3 + Element Plus 管理系统 │ 否 │
│ react-app │ React + TypeScript 应用模板 │ 否 │
└──────────────────┴────────────────────────────────────────┴─────────────────┘
支持从多种来源导入模板配置。
语法:
cc import [options]选项:
--file <path>- 从 JSON 文件导入模板配置--gits <url>- 从 Git 模板仓库导入多个模板--git <url>- 从 Git 仓库导入单个模板--merge- 与现有配置合并(相同 value 会跳过)
使用示例:
- 从 JSON 文件导入
# 替换模式(清空原配置)
cc import --file ./templates.json
# 合并模式(保留原配置)
cc import --file ./templates.json --merge- 从模板仓库导入
# 从模板仓库导入多个模板
cc import --gits https://github.com/username/template-store.git
# 合并模式导入
cc import --gits https://github.com/username/template-store.git --merge- 从单个仓库导入
# 导入单个模板(不支持 --merge)
cc import --git https://github.com/username/single-template.gitJSON 文件格式示例:
{
"templateList": [
{
"name": "vue3-admin",
"description": "Vue 3 后台管理系统模板",
"originUrls": ["https://github.com/username/vue3-admin.git"],
"value": "vue3-admin",
"isStore": false
}
]
}注意事项:
--gits用于导入包含多个模板的仓库--git用于导入单个模板仓库- 默认为替换模式,使用
--merge启用合并模式 - Git 仓库必须公开可访问
完整的配置管理系统,支持查看、设置、添加、删除配置。
查看所有配置:
cc config查看支持的配置项:
cc config keys# 获取模板列表
cc config get templateList
cc config get tl # 简写
# 获取特定配置项
cc config get <key># 交互式设置模板列表
cc config set templateList
cc config set tl # 简写# 添加新的模板配置
cc config add templateList
cc config add tl # 简写# 删除指定模板配置
cc config del templateList
cc config del tl # 简写# 重置所有配置为默认值
cc config reset
# 重置指定配置项
cc config reset templateList# ⚠️ 危险操作:清空所有模板配置
cc config clear templateList支持的配置 key:
templateList/tl- 模板列表配置
根据你的模板组织方式,我们推荐以下最佳实践:
如果你的模板都存放在一个模板仓库中(如一个 Git 仓库包含多个子目录,每个子目录是一个独立的模板),推荐使用:
# 一键导入所有模板,自动识别并配置
cc import --gits https://github.com/your-username/template-store.git优势:
- ✅ 自动化程度高 - 工具会自动扫描仓库中的所有模板目录
- ✅ 配置简单 - 一条命令完成所有模板的导入
- ✅ 维护便利 - 模板集中管理,更新时重新导入即可
示例仓库结构:
your-template-store/
├── vue3-admin/ # Vue3 管理系统模板
├── react-app/ # React 应用模板
├── koa-api/ # Koa API 模板
├── nextjs-blog/ # Next.js 博客模板
└── ... # 更多模板
如果你有很多模板,且每个模板都是独立的 Git 仓库,推荐创建一个 JSON 配置文件进行批量管理:
# 创建配置文件后批量导入
cc import --file ./my-templates.json优势:
- ✅ 灵活控制 - 可以精确控制每个模板的配置信息
- ✅ 版本管理 - JSON 文件可以版本化管理,便于团队协作
- ✅ 部分导入 - 可以选择性导入部分模板
JSON 配置文件示例:
{
"templateList": [
{
"name": "Vue3 Admin",
"description": "基于 Vue3 + Element Plus 的后台管理系统",
"originUrls": [
"https://github.com/your-team/vue3-admin-template.git",
"https://gitee.com/your-team/vue3-admin-template.git"
],
"value": "vue3-admin",
"isStore": false
},
{
"name": "React TypeScript App",
"description": "React + TypeScript + Vite 快速开发模板",
"originUrls": ["https://github.com/your-team/react-ts-template.git"],
"value": "react-ts",
"isStore": false
},
{
"name": "Koa API Server",
"description": "基于 Koa2 的 RESTful API 服务模板",
"originUrls": ["https://github.com/your-team/koa-api-template.git"],
"value": "koa-api",
"isStore": false
}
]
}| 场景 | 推荐方式 | 适用情况 |
|---|---|---|
| 集中管理 | cc import --gits |
• 模板数量适中(5-20个) • 希望统一管理和维护 • 团队共享相同的模板集 |
| 分散管理 | cc import --file |
• 模板数量很多(20+个) • 模板来源不同(不同组织/个人) • 需要精细化配置管理 |
| 混合管理 | 组合使用 | • 既有集中仓库又有独立仓库 • 使用 --merge 参数逐步添加 |
- 定期更新:建议定期重新导入模板配置,确保使用最新版本
- 备份配置:使用
cc config get templateList备份当前配置 - 测试验证:新导入模板后,建议先创建测试项目验证模板可用性
工具会在用户目录下创建配置文件:
配置文件结构:
{
"templateList": [
{
"name": "模板名称",
"description": "模板描述",
"originUrls": ["Git仓库地址"],
"value": "模板标识符",
"isStore": false
}
]
}字段说明:
name- 模板显示名称description- 模板描述信息originUrls- Git 仓库地址数组(支持多个镜像地址)value- 模板唯一标识符isStore- 是否为模板仓库(包含多个子模板的表示仓库为 true,一个 git 地址对应一个模板的则为 false)这个非常重要,关系到下载的时候如何处理模板
your-template/
├── package.json # 必须包含 name 和 description
├── src/
├── public/
└── ... # 其他模板文件
template-store/
├── vue3-admin/ # 模板1
│ ├── package.json
│ └── ...
├── react-app/ # 模板2
│ ├── package.json
│ └── ...
└── ... # 更多模板
- 网络环境:确保网络可以正常访问 Git 仓库
- 权限问题:某些模板可能需要 Git 仓库访问权限
- 模板质量:建议使用经过测试的模板仓库
- 版本兼容:模板应该与当前 Node.js 版本兼容
- 目录覆盖:创建项目前请确认目录名称,避免意外覆盖
Q: 创建项目失败,提示 Git 错误
A: 检查 Git 是否正确安装,网络是否可访问仓库地址
Q: 模板列表为空
A: 使用 cc import 命令导入模板配置,或使用 cc config add templateList 手动添加
Q: 项目名称不符合规范
A: 项目名称需符合 npm 包命名规范:小写字母、数字、连字符
Q: Node.js 版本过低
A: 升级 Node.js 到 18.0.0 或更高版本
Q: 使用 git 导入模板列表时,提示 “临时目录已存在...”
A: 这是因为在 git 导入时,会创建临时目录来 __coderjc-template-store__ 进行工作,而为了防止某些意外原因,cli 无法正常的删除临时目录,所以临时目录是在当前运行命令的工作区下。因此执行 cc import 导入时,你应该避免当前工作区下存在这个名称的目录。
欢迎提交 Issue 和 Pull Request!
如果这个工具对你有帮助,请考虑给项目一个 ⭐️ Star!
- 项目地址:https://github.com/jieci0825/coderjc-cli
- 作者邮箱:coderjc@qq.com
- 问题反馈:GitHub Issues