如何在自定义 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/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
或来自@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 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章