You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建Nx命令以动态生成指定名称的Angular库?

实现自定义Nx命令一键生成领域库

你可以通过Nx的**自定义生成器(Generator)**封装重复的库生成逻辑,只需传入领域关键词(如notification)就能自动生成符合结构的库,完全替代手动替换命令的操作。以下是具体步骤:

1. 创建自定义生成器

首先生成一个用于封装数据访问库生成逻辑的自定义生成器:

npx nx g @nx/workspace:generator data-access-lib

这会在tools/generators/data-access-lib目录下生成生成器的基础文件结构。

2. 编写生成器核心逻辑

打开tools/generators/data-access-lib/generator.ts,替换原有代码为以下逻辑,实现参数替换和自动调用Angular库生成器:

import { Tree, formatFiles, installPackagesTask } from '@nx/devkit';
import { libraryGenerator } from '@nx/angular/generators';
import { DataAccessLibGeneratorSchema } from './schema';

export default async function (tree: Tree, options: DataAccessLibGeneratorSchema) {
  // 调用Nx Angular库生成器,自动填充所有需要替换的参数
  await libraryGenerator(tree, {
    name: `${options.name}-data-access`,
    directory: `libs/${options.name}/data-access`,
    buildable: true,
    prefix: options.name,
    importPath: `@org/${options.name}/data-access`,
    tags: `lib:${options.name}`
  });

  await formatFiles(tree);
  return () => {
    installPackagesTask(tree);
  };
}

3. 定义生成器参数规则

编辑tools/generators/data-access-lib/schema.json,定义必填的领域名称参数:

{
  "$schema": "http://json-schema.org/schema",
  "id": "DataAccessLibGenerator",
  "title": "Generate a domain-specific data access library",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "领域名称(如auth、notification)",
      "$default": {
        "$source": "argv",
        "index": 0
      },
      "x-prompt": "请输入领域名称(如auth、notification)"
    }
  },
  "required": ["name"]
}

4. 使用自定义生成器

现在只需传入领域关键词,就能一键生成符合结构的库:

# 生成notification领域的data-access库
npx nx g data-access-lib notification

# 生成auth领域的data-access库
npx nx g data-access-lib auth

扩展建议

如果需要生成其他类型的领域库(如feature、ui),可以:

  • 复制现有生成器并修改名称(如feature-lib)
  • 在schema中添加type参数,让生成器支持多类型库的生成逻辑

内容的提问来源于stack exchange,提问作者Jack Sud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 04:31:02