revox
Version:
Revox 是一个强大的 CLI 工具,帮助开发者从命令行构建、开发、测试、部署和维护 React 应用。通过 Revox,您可以简化开发流程,同时保持对项目的全面掌控。
83 lines (72 loc) • 2.54 kB
JavaScript
import { program } from 'commander';
import chalk from 'chalk';
// 设置版本和描述
program
.version('0.0.1')
.description('Revox 是一个强大的 CLI 工具,帮助开发者从命令行构建、开发、测试、部署和维护 React 应用。');
// 定义 generate 命令
program
.command('generate <template> <name>')
.alias('g') // 别名
.description(`生成 组件/模块/文件/目录
示例:
$ revox g rfc MyComponent # 生成基础组件
$ revox g rfc.module MyModule # 生成完整模块
$ revox g rfc.comp Button -d src # 指定输出目录
$ revox g rfc.context Theme -f # 强制覆盖`)
.option('-d, --dir <directory>', '指定输出目录', './')
.option('-f, --force', '强制覆盖已存在的文件', false)
.action((template, name, options) => {
console.log(chalk.green('正在生成组件...'));
import('../lib/commands/generate.js')
.then(module => {
try {
module.default(template, name, options);
} catch (error) {
console.error(chalk.red('生成失败:'), error.message);
process.exit(1);
}
})
.catch(error => {
console.error(chalk.red('命令执行失败:'), error.message);
process.exit(1);
});
});
// 定义 tool 命令
program
.command('tool <action> [source]')
.alias('t')
.description(`工具箱命令集
示例:
$ revox tool tmp ./src/Button # 转换组件为模板
$ revox tool tmp ./components/Modal # 转换整个目录
$ revox tool tmp Button.tsx --root # 保存到项目根目录`)
.option('-r, --root', '保存到项目根目录的 .revox 文件夹', false)
.action((action, source, options) => {
console.log(chalk.green('正在执行工具箱命令...'));
import('../lib/commands/tool.js')
.then(module => {
try {
module.default(action, source, options);
} catch (error) {
console.error(chalk.red('执行失败:'), error.message);
process.exit(1);
}
})
.catch(error => {
console.error(chalk.red('命令加载失败:'), error.message);
process.exit(1);
});
});
// 定义 init 命令
program
.command('init')
.description('初始化项目')
.action(() => {
console.log(chalk.green('正在初始化项目...'));
// 调用初始化命令的实现
import('../lib/commands/init.js').then(module => module.default());
});
// 解析命令行参数
program.parse(process.argv);