[英]Extending NX generate component
在我的 Monorepo 中,我使用了兩種類型的組件。
nx gc foo
在這里工作正常。 我的問題是,如何擴展nx gc foo
的標准功能,以便它自動創建這些文件?
您可能想要編寫自己的原理圖集合。
請檢查文檔、 一些不錯的文章和來源。
基本上,您從新組件原理圖中擴展代碼將如下所示:
import { chain, externalSchematic, Rule } from '@angular-devkit/schematics';
export default function(schema: any): Rule {
// add your custom code here
return chain([
externalSchematic('@nrwl/schematics', 'module', {
...module options
}),
externalSchematic('@nrwl/schematics', 'component', {
...component options
}),
// and here
]);
}
UPD
使用 nx 生成器 API 編寫的相同內容:
import { wrapAngularDevkitSchematic } from '@nrwl/devkit/ngcli-adapter';
import {
Tree,
formatFiles,
generateFiles,
joinPathFragments,
names,
} from '@nrwl/devkit';
// this is your custom generator schema
import { Schema } from './models/schema.model';
export default async function (tree: Tree, schema: Schema) {
const moduleGenerator = wrapAngularDevkitSchematic(
'@schematics/angular',
'module'
);
const componentGenerator = wrapAngularDevkitSchematic(
'@schematics/angular',
'component'
);
// it will create a custom module for you
await moduleGenerator(tree, {
name: ...module name,
project: ...project to add module,
path: ...path to add module file,
});
// it will create a custom component for you
await componentGenerator(tree, {
name: ...your name,
project: ...project to add component,
});
// it's a branch where you can add your package.json and index.ts
// you should create template files for them in ./files folder
generateFiles(
tree, // the virtual file system
joinPathFragments(__dirname, './files'), // path to the file templates
joinPathFragments('libs/'), // destination path of the files
{
...schema,
...names(schema.name),
tmpl: '',
} // config object to replace variable in file templates
);
return tree;
}
有關更多示例,請參閱他們的測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.