如何在自定义 Nx 生成器中生成 Angular 应用程序?

Posted

技术标签:

【中文标题】如何在自定义 Nx 生成器中生成 Angular 应用程序?【英文标题】:How to generate an Angular app in a custom Nx generator? 【发布时间】:2021-11-21 11:17:48 【问题描述】:

我有一个 Nx Angular 单一存储库。我想实现一个自定义生成器,这样我就可以快速创建应用程序。我可以使用来自@nrwl/workspacelibraryGenerator 函数来生成库。到目前为止,我的生成器看起来像这样:

import  Tree, formatFiles  from '@nrwl/devkit';
import  libraryGenerator  from '@nrwl/workspace';

export default async function (host: Tree, schema: App) 
  await generateLibrary(host, schema, 'models', 'domain');
  await generateLibrary(host, schema, 'data-access', 'data');

  await formatFiles(host);


async function generateLibrary(
  host: Tree,
  schema: App,
  libraryName: string,
  type: string
) 
  const directory = `$schema.system.toLowerCase()/$schema.name`;

  const importPath = `@org/$schema.system.toUpperCase()/$
    schema.name
  /$libraryName`;

  await libraryGenerator(host, 
    name: libraryName,
    directory,
    importPath,
    linter: 'eslint',
    simpleModuleName: true,
    strict: true,
    tags: `type:$type', scope:$schema.scope`,
  );

现在,我也想生成应用程序,但我不确定如何做到这一点,因为没有什么比来自@nrwl/workspace 或来自@nrwl/devkit 的“应用程序生成器”更相似。

【问题讨论】:

【参考方案1】:

您可以从@nrwl/angular/generators 使用applicationGenerator

import  applicationGenerator  from '@nrwl/angular/generators
....
....
....
await applicationGenerator(host, 
  name: appName,
  directory: directoryName,
  style: 'scss',
  tags: ``,
  routing: false,
  e2eTestRunner: E2eTestRunner.None,
);

如果您正在寻找生成嵌套应用程序,您可以使用:

import  applicationGenerator  from '@nrwl/nest';
....
....
....
await applicationGenerator(host, 
  name: appName,
  unitTestRunner: 'jest',
  linter: Linter.EsLint,
  directory: directoryName,
  tags: ``
);

【讨论】:

以上是关于如何在自定义 Nx 生成器中生成 Angular 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

生成 LTPA 令牌?

如何使用 Angular CLI 在特定文件夹中生成组件?

如何让计算机在 Swift 中生成预定义的一组数字?

在 Java 中生成噪声颜色

如何使用 ControlValueAccessor Angular 在自定义输入中使用指令

Nrwl Nx 生成服务而不是 lib?