如何在自定义 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: ``
});
我有 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: ``
});