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

How to generate an Angular app in a custom Nx generator?

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

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 和 [=15= 都没有类似“应用程序生成器”的东西].

您可以使用 @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: ``
});