@agile-team/robot-cli
Version:
🤖 现代化项目脚手架工具,支持多技术栈快速创建项目 - 优先 bun,兼容 npm/pnpm/yarn
439 lines (350 loc) • 9.79 kB
Markdown
> 现代化项目脚手架工具,专为团队协作打造
一条命令,60秒搭建完整项目。支持多种技术栈、多种架构模式,让项目创建变得简单高效。
- **🎯 智能模板分类** - 推荐模板、分类浏览、关键词搜索
- **⚡ 极速项目创建** - 一条命令创建完整项目架构
- **📦 现代包管理器** - 优先推荐 bun/pnpm,智能检测最佳选择
- **🌐 总是最新版本** - 每次创建都下载最新模板,无缓存困扰
- **🎨 友好用户界面** - 现代化终端交互,清晰进度提示
```bash
npm install -g @agile-team/robot-cli
```
```bash
robot create
robot create my-vue-admin --template robot-admin
robot list
```
| 技术栈 | 模板 | 描述 |
|-------|------|------|
| **Vue.js** | `robot-admin` | 后台管理系统完整版 |
| | `robot-admin-base` | 后台管理系统精简版 |
| | `robot-micro` | 微前端架构(MicroApp) |
| **React.js** | `robot-react` | React后台完整版 |
| 技术栈 | 模板 | 描述 |
|-------|------|------|
| **uni-app** | `robot-uniapp` | 多端应用(小程序/H5/App) |
| 技术栈 | 模板 | 描述 |
|-------|------|------|
| **NestJS** | `robot-nest` | 企业级Node.js框架 |
| **Koa3** | `robot-koa` | 轻量级Node.js框架 |
| 技术栈 | 模板 | 描述 |
|-------|------|------|
| **Electron** | `robot-electron` | 跨平台桌面应用 |
| **Tauri** | `robot-tauri` | 轻量级桌面应用 |
```bash
robot create
robot create my-project --template robot-admin
robot create my-project --skip-install
```
```bash
robot list
robot list --recommended
robot search vue
robot search admin
```
Robot CLI 智能选择最佳包管理器:
1. **bun** 🥇 - 极速安装,现代化
2. **pnpm** 🥈 - 快速安装,节省空间
3. **yarn** ⚖️ - 兼容现有项目
4. **npm** ⚖️ - Node.js默认
Robot CLI 不使用本地缓存,每次创建项目都会下载最新版本的模板:
- ✅ **确保最新**: 总是获得最新的代码和依赖
- ✅ **避免冲突**: 无需担心缓存过期或版本不一致
- ✅ **简化维护**: 用户无需管理缓存,开发者无需考虑缓存策略
- ✅ **减少错误**: 避免因缓存损坏导致的创建失败
```
robot-cli/
├── bin/index.js
├── lib/
│ ├── templates.js
│ ├── create.js
│ ├── download.js
│ └── utils.js
└── test/local-test.js
```
1. 在 `lib/templates.js` 中添加配置:
```javascript
'robot-new-template': {
name: 'Robot新模板',
description: '模板描述',
repoUrl: 'https://github.com/ChenyCHENYU/Robot_New_Template',
features: ['特性1', '特性2'],
version: 'full'
}
```
2. 模板仓库要求:
- 包含 `package.json` 和 `README.md`
- 使用 `_gitignore` 而不是 `.gitignore`
- 使用 `_env.example` 而不是 `.env.example`
3. 命名规范:
- **模板key**: `robot-xxx` (如:robot-admin)
- **仓库名**: `Robot_Xxx` (如:Robot_Admin)
- **精简版**: 加 `-base` 后缀
```bash
git clone https://github.com/ChenyCHENYU/robot-cli.git
cd robot-cli && npm install && npm link
npm run test:setup
robot create test-project
```
如果你想基于Robot CLI创建自己的脚手架工具:
```bash
git clone https://github.com/YOUR_USERNAME/robot-cli.git
cd robot-cli
npm install
```
```bash
{
"name": "@yourteam/your-cli",
"bin": {
"your-cli": "./bin/index.js"
}
}
program.name('your-cli')
```
```javascript
// lib/templates.js - 替换为你的模板仓库
export const TEMPLATE_CATEGORIES = {
frontend: {
name: '🎨 前端项目',
stacks: {
vue: {
name: 'Vue.js',
patterns: {
monolith: {
name: '单体应用',
templates: {
'your-admin': {
name: '你的后台模板',
repoUrl: 'https://github.com/YOUR_ORG/Your_Admin_Template',
// ...
}
}
}
}
}
}
}
}
```
```javascript
// lib/create.js - 修改欢迎信息和Logo
function showWelcome() {
const logoLines = [
' ██ ██ ██████ ██ ██ ██████ ',
' ██ ██ ██ ██ ██ ██ ██ ██ ',
' ████ ██ ██ ██ ██ ██████ ',
' ██ ██ ██ ██ ██ ██ ██ ',
' ██ ██████ ██████ ██ ██ '
];
// 自定义你的Logo和标题
}
```
```bash
npm version 1.0.0
npm publish --access public
npm install -g @yourteam/your-cli
your-cli create my-project
```
```bash
npm publish --registry=https://your-company-npm.com
npm install -g @yourcompany/cli --registry=https://your-company-npm.com
```
```javascript
// 支持配置文件 ~/.your-cli-config.json
{
"templateSource": "https://your-git-server.com",
"defaultOrg": "YOUR_COMPANY",
"defaultBranch": "main"
}
```
```javascript
// lib/templates.js - 支持动态加载模板列表
export async function loadTemplatesFromAPI() {
const response = await fetch('https://your-api.com/templates');
return response.json();
}
```
```javascript
// lib/plugins/deploy.js
export function addDeployCommand(program) {
program
.command('deploy')
.description('部署项目到服务器')
.action(async () => {
// 你的部署逻辑
});
}
// bin/index.js
import { addDeployCommand } from '../lib/plugins/deploy.js';
addDeployCommand(program);
```
```javascript
// lib/generators/component.js
export async function generateComponent(name, options) {
// 生成组件文件的逻辑
}
// 使用
your-cli generate component MyComponent
```
```json
// robot.config.json
{
"defaultTemplate": "your-admin",
"packageManager": "pnpm",
"gitInit": true,
"plugins": ["@yourteam/cli-plugin-deploy"]
}
```
```json
// ~/.robot-cli/config.json
{
"templateSource": "github",
"defaultOrg": "YourOrg",
"alwaysLatest": true
}
```
```javascript
// 支持从多个源获取模板
const TEMPLATE_SOURCES = {
github: 'https://github.com',
gitlab: 'https://gitlab.com',
gitee: 'https://gitee.com',
custom: process.env.CUSTOM_TEMPLATE_SOURCE
};
```
```javascript
// 模板下载后的预处理钩子
export async function preprocessTemplate(templatePath, options) {
// 替换模板中的占位符
// 执行自定义脚本
// 添加企业标准配置
}
```
```javascript
// 创建项目后自动设置CI/CD
export async function setupCICD(projectPath, options) {
if (options.cicd) {
await generateGitlabCI(projectPath);
await generateDockerfile(projectPath);
}
}
```
```bash
major.minor.patch
npm run test
npm run build
npm version patch
npm publish
git push --tags
```
```bash
npm run sync-templates
npm run validate-templates
```
```javascript
// 添加使用统计
import analytics from './lib/analytics.js';
analytics.track('template_used', {
template: template.key,
version: packageJson.version
});
```
**Q: 提示 "command not found"?**
A: 全局安装CLI:`npm install -g @agile-team/robot-cli`
**Q: 模板下载失败?**
A: 检查网络连接,确保能访问GitHub
**Q: 如何添加自定义模板?**
A: 创建模板仓库 → 添加配置 → 测试功能
**Q: 支持私有仓库吗?**
A: 目前仅支持公开GitHub仓库
**Q: 为什么不使用缓存?**
A: 为了确保总是获得最新版本的模板,避免缓存相关的问题
```bash
npm install -g @agile-team/robot-cli
robot create my-awesome-project
cd my-awesome-project && bun install && bun run dev
```
欢迎提交 Issues 和 Pull Requests!
MIT License
- [GitHub仓库](https://github.com/ChenyCHENYU/robot-cli)
- [npm包](https://www.npmjs.com/package/@agile-team/robot-cli)
- [问题反馈](https://github.com/ChenyCHENYU/robot-cli/issues)
---
**让项目创建变得简单高效,专注于业务逻辑的实现!** 🚀
```bash
npx @agile-team/robot-cli create my-project
```