@@ -42,11 +42,21 @@ export async function componentGenerator(tree: Tree, options: ComponentGenerator
4242 components : ComponentConfig [ ] ;
4343 } > ( componentsJsonPath ) ;
4444
45- const componentTypes = componentsRegistry . components . map ( ( component ) => component . type ) ;
45+ const allComponentTypes = componentsRegistry . components . map (
46+ ( component ) => component . type ,
47+ ) ;
4648 const requestedComponents = options . types . split ( ',' ) ;
4749
50+ // generate barrel file if does not exist
51+ const barrelPath = outputComponentsFolder + '/index.ts' ;
52+ if ( ! tree . exists ( barrelPath ) ) {
53+ tree . write ( barrelPath , '' ) ;
54+ }
55+
56+ let barrelContentToAppend = '' ;
57+
4858 requestedComponents . forEach ( ( component ) => {
49- const indexOfComponent = componentTypes . indexOf ( component . trim ( ) ) ;
59+ const indexOfComponent = allComponentTypes . indexOf ( component . trim ( ) ) ;
5060 if ( indexOfComponent === - 1 ) {
5161 throw new Error ( `${ component } is not a registered component.
5262Please file an issue if you want it to be implemented.` ) ;
@@ -70,8 +80,19 @@ Please file an issue if you want it to be implemented.`);
7080 outputComponentBasePath ,
7181 specificComponentConfig . files ,
7282 ) ;
83+
84+ specificComponentConfig . files . map ( ( file ) => {
85+ barrelContentToAppend += `export * from './${ specificComponentConfig . componentFolder } /${ file . split ( '.' ) [ 0 ] } ';\n` ;
86+ } ) ;
7387 } ) ;
7488
89+ // update barrel file
90+ const barrelContent = tree . read ( barrelPath , 'utf-8' ) ;
91+ if ( barrelContent !== '' && barrelContent . slice ( - 1 ) !== '\n' ) {
92+ barrelContentToAppend = '\n' + barrelContentToAppend ;
93+ }
94+ tree . write ( barrelPath , barrelContent + barrelContentToAppend ) ;
95+
7596 await formatFiles ( tree ) ;
7697}
7798
0 commit comments