本章将要介绍如何在 Monorepo 工程下创建子项目。
Modern.js 支持使用 pnpm 和 Yarn 的 Monorepo,这里以使用 pnpm 为例。以下命令可以以同样方式使用 Yarn 来执行。
Modern.js 针对 Monorepo 工程提供了生成器功能,它用于在 Monorepo 工程下创建不同类型的 Monorepo 子项目。在生成器中提供以下类型子项目的创建:
要启动 Monorepo 的生成器功能,可以在 Monorepo 工程根目录下执行命令:
pnpm run new
使用 Yarn 的方式:yarn new
执行成功后,可以看到如下内容:
? 请选择你想创建的工程类型 (Use arrow keys)
❯ Web 应用
Web 应用(测试)
Npm 模块
Npm 模块(内部)
「应用」与「应用(测试)」都是「应用」类型的项目,区别是「应用」类型的子项目会创建在 ./apps
目录下,而 「应用(测试)」类型的子项目会创建在 ./examples
目录下。
「模块」与「模块(内部)」都是「模块」类型的项目,区别之一是「模块」类型的子项目会创建在 ./packages
目录下,而「模块(内部)」类型的子项目会创建在 ./features
目录下。
对于「模块」类型的子项目允许被发布到外部(例如 npm),而对于「模块(内部)」的子项目则可以在应用项目中直接使用其源码(该特性是「模块」项目不具备的,应用项目对于「模块(内部)」子项目做了特殊处理),因此这类子项目不需要发布到外部。
然后根据不同的需求选择对应的类型项目选项,选择之后便开始出现对应子项目类型的问题和选项。例如选择「应用」后会出现:
? 请选择你想创建的工程类型:Web应用
? 请填写子项目名称
当完成所有生成器问题之后,便开始进行项目的创建和项目依赖的下载。当创建成功之后,可以看到类似以下内容:
[INFO] 依赖自动安装成功
[INFO] 创建成功!
可在新项目的目录下运行以下命令:
pnpm run dev # 启动开发服务器
pnpm run build # 构建生产环境产物
pnpm run serve # 启动生产环境服务
pnpm run lint # 运行 ESLint 并自动修复问题
pnpm run new # 启用可选功能或创建项目要素