name: nx-generate description: 使用 Nx 生成器生成代码。在创建脚手架代码或转换现有代码时使用 - 例如创建库或应用程序,或任何其他模板代码或自动化重复任务。当使用 Nx 生成代码时,始终首先使用此技能,而不是调用 MCP 工具或立即运行 nx generate。
运行 Nx 生成器
Nx 生成器是强大的工具,用于在单仓库中创建脚手架项目、自动化代码迁移或自动化重复任务。它们确保代码库的一致性并减少模板工作。
此技能适用于用户希望:
- 创建新项目,如库或应用程序
- 创建功能或模板代码的脚手架
- 运行特定于工作区或自定义的生成器
- 做任何其他 Nx 生成器存在的事情
生成器发现流程
步骤 1:列出可用生成器
使用 Nx CLI 发现可用生成器:
- 列出插件所有生成器:
npx nx list @nx/react - 查看可用插件:
npx nx list
这包括:
- 插件生成器(例如,
@nx/react:library、@nx/js:library) - 本地工作区生成器(定义在仓库自己的插件中)
步骤 2:匹配生成器到用户请求
基于用户请求,识别哪些生成器可以满足他们的需求。考虑:
- 他们想要创建什么类型的工件(库、应用程序等)
- 哪个框架或技术栈相关
- 是否提到特定生成器名称
重要:当本地工作区生成器和外部插件生成器都可以满足请求时,始终优先使用本地工作区生成器。本地生成器是针对特定仓库的模式和约定定制的。
有可能用户请求是没有任何 Nx 生成器可以满足的。在这种情况下,您可以停止使用此技能,并尝试以其他方式帮助用户。然而,这需要高度证明。在放弃之前,仔细考虑每个可用的生成器。在做出决定前,查看任何可能相关的细节。
预执行检查清单
在运行任何生成器之前,完成这些步骤:
1. 获取生成器模式
使用 --help 标志理解所有可用选项:
npx nx g @nx/react:library --help
注意:
- 必须提供的必需选项
- 可能相关的可选选项
- 可能需要覆盖的默认值
2. 阅读生成器源代码
理解生成器实际做什么有助于您:
- 知道将创建/修改什么文件
- 理解任何副作用(更新配置、安装依赖等)
- 识别可能不明显的选项
找到生成器源代码:
- 对于插件生成器:使用
node -e "console.log(require.resolve('@nx/<plugin>/generators.json'));"找到 generators.json,然后从那里定位源代码 - 如果失败,直接从
node_modules/<plugin>/generators.json读取 - 对于本地生成器:它们通常在
tools/generators/或本地插件目录中。您可以在仓库中搜索生成器名称以找到它。
2.5 重新评估生成器是否正确
一旦您理解了所选生成器的作用,重新考虑:这是服务用户请求的正确生成器吗? 如果不是,可以回到生成器发现流程,并在继续之前选择不同的生成器。如果这样做,请确保再次完成整个预执行检查清单。
3. 理解仓库上下文
生成之前,检查代码库的目标区域:
- 查看类似的现有工件(其他库、应用程序等)
- 识别仓库中使用的模式和约定
- 注意命名约定、文件结构和配置模式
- 在配置生成器时尝试匹配这些模式
例如,如果类似的库使用特定的测试运行器、构建工具或 linter,请尝试匹配它。 如果项目或其他工件以特定命名约定组织,请尝试匹配它。
4. 验证必需选项
确保所有必需选项都有值:
- 将用户请求映射到生成器选项
- 尽可能从上下文中推断值
- 向用户询问任何关键缺失信息
执行
请记住,如果用户没有全局安装 nx,您可能必须在命令前添加 npx/pnpx/yarn 前缀。 许多生成器会根据执行位置表现不同。例如,第一方 nx 库生成器使用当前工作目录来确定库应放置的目录。这非常重要。
考虑干运行(可选)
首先使用 --dry-run 运行强烈鼓励但不是强制性的。使用您的判断:
- 对于复杂生成器或不熟悉的领域:先进行干运行
- 对于简单、熟悉的生成器:可以直接进行
- 干运行显示文件名和创建/删除/修改标记,但不显示内容
- 有些情况下生成器不支持干运行(例如,如果它需要安装 npm 包) - 在这种情况下 --dry-run 可能会失败。不要气馁,只需继续实际运行生成器,并从那里迭代。
运行生成器
执行生成器:
nx generate <generator-name> <options> --no-interactive
关键:始终包含 --no-interactive 以防止提示挂起执行。
示例:
nx generate @nx/react:library --name=my-utils --no-interactive
处理生成器失败
如果生成器失败:
- 诊断错误 - 仔细阅读错误消息
- 识别原因 - 缺失选项、无效值、冲突等
- 尝试自动修复 - 调整选项或解决冲突
- 重试 - 使用更正选项再次运行生成器
常见失败原因:
- 缺失必需选项
- 无效选项值
- 与现有文件冲突
- 缺失依赖
- 生成器不支持某些标志组合
后生成
1. 修改生成代码(如果需要)
生成器提供起点,但输出可能需要调整以满足用户的特定要求:
- 按请求添加或修改功能
- 调整导入、导出或配置
- 与仓库中的现有代码模式集成
2. 格式化代码
对所有生成/修改的文件运行格式化:
nx format --fix
其他语言可能也需要不同的格式化调用。
3. 运行验证
验证生成的代码是否正确工作。这取决于生成器类型和可用目标而异。 如果生成器创建了新项目,直接运行其目标 使用您的判断来确定需要验证什么。
示例:
nx lint <new-project>
nx test <new-project>
nx build <new-project>
4. 处理验证失败
当验证失败时:
如果范围可管理(一些 lint 错误、小类型问题):
- 修复问题
- 重新运行验证确认
如果问题广泛(许多错误、复杂问题):
- 先尝试简单、明显的修复
- 如果仍然失败,升级到用户:
- 生成内容的描述
- 什么验证失败
- 您尝试修复了什么
- 剩余需要用户输入的问题
错误处理
生成器失败
- 检查错误消息以了解具体原因
- 验证所有必需选项已提供
- 检查与现有文件的冲突
- 确保生成器名称和选项正确
缺失选项
- 咨询生成器模式以了解必填字段
- 当合理时从上下文推断值
- 向用户询问无法推断的值
关键原则
-
本地生成器优先 - 当两者都可以工作时,始终优先使用工作区/本地生成器而不是外部插件生成器
-
运行前理解 - 阅读模式和源代码以完全理解会发生什么
-
无提示 - 始终使用
--no-interactive防止挂起 -
生成器是起点 - 根据需要修改输出以完全满足用户要求
-
验证更改有效 - 不要只是生成;确保代码构建、lint 和测试通过
-
主动修复 - 不要只报告错误;当可能时尝试自动解决它们
-
匹配仓库模式 - 研究仓库中类似的现有代码并匹配其约定