将 modernx-cli 功能集成到 modernx 项目中,提供现代化的 CLI 工具。
- ✅ 创建 CLI 目录结构 (
/cli) - ✅ 实现 CLI 入口文件 (
bin/modernx) - ✅ 开发核心命令 (
create,add,dev,build) - ✅ 配置 package.json 和依赖
- ✅ basic 模板: 基础 modernx 项目
- ✅ full 模板: 完整功能项目(router, immer, loading)
- ✅ react18 模板: React 18 并发特性演示
- ✅ enterprise 模板: 企业级最佳实践
- ✅ useTransition Hook: 并发更新支持
- ✅ useDeferredValue Hook: 延迟值处理
- ✅ 自动批处理: 状态更新批处理
- ✅ Strict Mode: React 18 严格模式
- ✅ router: React Router v6 集成
- ✅ immer: 不可变状态更新
- ✅ loading: 加载状态管理
- ✅ typescript: TypeScript 支持
- ✅ testing: 测试环境配置
- ✅ Vite 配置: 现代化构建工具
- ✅ ESLint 配置: 代码质量检查
- ✅ 热重载: 开发服务器支持
- ✅ 生产构建: 优化打包
# 基本项目
modernx create my-app
# React 18 特性项目
modernx create my-app --template react18
# 完整功能项目
modernx create my-app --template full# 添加路由
modernx add router
# 添加 Immer
modernx add immer
# 添加 TypeScript
modernx add typescript# 开发服务器
modernx dev
# 生产构建
modernx build
# 列出模板
modernx template生成的 CLI 项目结构:
my-app/
├── src/
│ ├── components/ # React 组件
│ ├── models/ # ModernX 模型
│ ├── routes/ # 路由组件
│ ├── services/ # API 服务
│ ├── utils/ # 工具函数
│ ├── app.js # ModernX 应用配置
│ └── index.js # 入口文件
├── public/ # 静态资源
├── package.json # 依赖配置
├── vite.config.js # Vite 配置
├── .eslintrc.js # ESLint 配置
└── README.md # 项目文档
- Commander.js: 命令解析
- Inquirer.js: 交互式问答
- Chalk: 终端美化
- Ora: 加载动画
- Vite: 现代化构建
- ESLint: 代码检查
- React 18: 并发特性
- npm: 包管理
- React Router v6: 路由
- Immer: 不可变状态
- modernx-loading: 加载状态
{
"scripts": {
"cli:build": "cd cli && npm run build",
"cli:test": "cd cli && npm test",
"cli:dev": "cd cli && npm run dev",
"cli:publish": "node scripts/publish-cli.js",
"cli:build-all": "node scripts/build-cli.js"
}
}scripts/build-cli.js: CLI 构建脚本scripts/publish-cli.js: CLI 发布脚本
# 构建 CLI
npm run cli:build
# 测试 CLI
npm run cli:test
# 开发模式
npm run cli:dev# 全局安装
npm install -g modernx-cli
# 创建项目
modernx create my-app
# 进入项目目录
cd my-app
# 安装依赖
npm install
# 启动开发服务器
npm run dev# 添加路由
modernx add router
# 添加 Immer 支持
modernx add immer
# 添加 TypeScript
modernx add typescriptimport { useModernXTransition } from 'modernx';
function MyComponent() {
const [isPending, startTransition] = useModernXTransition();
const handleClick = () => {
startTransition(() => {
dispatch({ type: 'count/increment' });
});
};
return (
<button onClick={handleClick} disabled={isPending}>
{isPending ? 'Loading...' : 'Click me'}
</button>
);
}import { useModernXConcurrentState } from 'modernx';
function SearchComponent() {
const { state, deferredState } = useModernXConcurrentState('search');
return (
<div>
<input value={state.query} />
<p>Current: {state.query}</p>
<p>Deferred: {deferredState.query}</p>
</div>
);
}// React 18 自动批处理这些更新
dispatch({ type: 'count/increment' });
dispatch({ type: 'count/increment' });
dispatch({ type: 'count/increment' });- 统一生态: CLI 和框架在同一仓库
- 版本同步: CLI 和框架版本保持一致
- 维护便利: 统一的维护和更新
- 用户体验: 一站式的解决方案
- 快速上手: 一键创建 React 18 + modernx 项目
- 最佳实践: 内置最佳实践和规范
- 现代化: 使用最新的工具链和特性
- 可扩展: 支持自定义模板和插件
# 发布 CLI 到 npm
npm run cli:publish- CLI 使用文档
- 模板开发指南
- 最佳实践
- 模板贡献指南
- 插件系统
- 反馈机制
- 文档: https://github.com/perlinson/modernx
- 问题: https://github.com/perlinson/modernx/issues
- PR: https://github.com/perlinson/modernx/pulls
modernx CLI 集成完成!提供了现代化的项目脚手架工具,支持 React 18 并发特性,为用户提供了完整的开发体验。
主要成果:
- ✅ 4 个项目模板(basic, full, react18, enterprise)
- ✅ 5 个功能模块(router, immer, loading, typescript, testing)
- ✅ 完整的 CLI 命令系统
- ✅ React 18 并发特性集成
- ✅ 现代化工具链(Vite, ESLint)