生成代码
将你的 Monorepo 拆分为多个包是组织代码、加速任务和改善本地开发体验的好方法。借助 Turborepo 的代码生成功能,可以轻松地为包、模块甚至单个 UI 组件生成新的源代码,并以结构化的方式与仓库的其余部分集成。
添加一个空包
向你的 Monorepo 添加一个新的空应用或包。
查看 gen workspace
的所有可用 选项。
复制现有包
你可以使用现有的工作区作为新应用或包的模板。这适用于现有 Monorepo 中的工作区,也适用于来自其他仓库的远程工作区(通过 GitHub URL 指定)。
示例
通过从仓库中的现有包复制,在你的 Monorepo 中创建一个新包。
通过从远程包复制,在你的 Monorepo 中创建一个新的工作区。
注意:从远程源添加时,Turborepo 无法验证你的仓库是否拥有所有必需的依赖项,以及是否正在使用正确的包管理器。在这种情况下,可能需要进行一些手动修改才能使新的工作区在你的仓库中按预期工作。
查看 gen workspace --copy
的所有可用 选项。
自定义生成器
如果内置生成器不符合你的需求,你可以使用 Plop 配置创建你自己的自定义生成器。Turborepo 将自动检测你的仓库中的任何生成器配置,并使其可从命令行运行。
虽然 Turborepo 生成器构建于 Plop 之上,但它们不需要在你的仓库中将 plop
作为依赖项安装。
虽然 Turborepo 理解所有 Plop 配置选项和功能,但它提供了一些额外的功能来改善在配置了 Turborepo 的仓库中编写生成器的体验。
- 生成器会被自动发现、加载并按工作区组织(无需在单个配置文件中手动
load
它们) - 生成器会自动从定义它们的工作区的根目录运行
- 可以从仓库内的任何位置(或通过
--root
标志从外部)调用生成器 - 零配置支持 TypeScript 生成器
- 不需要将
plop
作为仓库的依赖项安装
已知问题
自定义生成器目前不支持 ESM 依赖项。
开始使用
要构建和运行自定义生成器,请使用 Turborepo 从你的 Monorepo 中的任何位置运行以下命令。
系统将提示你选择现有生成器,或者在你还没有任何生成器时创建一个。你也可以在仓库根目录或任何工作区内的 turbo/generators/config.ts
(或 config.js
)手动创建你的配置。
如果你正在使用 TypeScript,你将需要安装 @turbo/gen
包作为 devDependencies
以访问所需的 TS 类型。
例如,以下示例说明了一个具有三个生成器位置的 Monorepo
在工作区内创建的生成器会自动从工作区根目录运行,而不是仓库根目录或生成器配置的位置。
这使你的生成器更易于编写。在 [workspace-root]
创建文件只需要指定为 <file>
,而不是 ../../<file>
。
了解更多关于 使用 Plop 创建自定义生成器的信息。
编写生成器
生成器配置文件是一个返回 Plop 配置对象的函数。配置对象用于定义生成器的提示和操作。
最简单的形式,生成器配置文件看起来像
提示
提示使用 Plop 提示编写,用于从用户那里收集信息。
操作
操作可以使用 内置 Plop 操作,或你自定义定义的 自定义操作函数
运行生成器
创建生成器配置文件后,你可以跳过选择提示,并使用以下命令直接运行指定的生成器
也可以使用 --args
将参数直接传递给生成器提示
有关更多信息,请参阅 Plop 文档中的 跳过提示。
查看 gen
的所有可用 选项。