1- import { writeFileSync as writeFile } from 'fs' ;
1+ import { writeFileSync as writeFile , existsSync , mkdirSync } from 'fs' ;
22
33import {
44 dirname as getDirName ,
55 join as joinPaths ,
6- normalize as normalizePath ,
76 relative as getRelativePath ,
87 sep as pathSeparator ,
98} from 'path' ;
@@ -19,9 +18,9 @@ import {
1918
2019import { convertTypes } from './converter' ;
2120import generateIndex , { IReExport } from './index-generator' ;
21+ import generateCommonReexports from './common-reexports-generator' ;
2222
2323import generateComponent , {
24- generateReExport ,
2524 IComponent ,
2625 IIndependentEvents ,
2726 INestedComponent ,
@@ -239,6 +238,7 @@ function generate({
239238 components : { baseComponent, extensionComponent, configComponent } ,
240239 out,
241240 widgetsPackage,
241+ generateReexports,
242242} : {
243243 metaData : IModel ,
244244 components : {
@@ -248,10 +248,10 @@ function generate({
248248 } ,
249249 out : {
250250 componentsDir : string ,
251- oldComponentsDir : string ,
252251 indexFileName : string
253252 } ,
254- widgetsPackage : string
253+ widgetsPackage : string ,
254+ generateReexports ?: boolean
255255} ) : void {
256256 const modulePaths : IReExport [ ] = [ ] ;
257257 rawData . widgets . forEach ( ( data ) => {
@@ -271,18 +271,23 @@ function generate({
271271 name : widgetFile . component . name ,
272272 path : `./${ removeExtension ( getRelativePath ( indexFileDir , widgetFilePath ) ) . replace ( pathSeparator , '/' ) } ` ,
273273 } ) ;
274-
275- writeFile (
276- joinPaths ( out . oldComponentsDir , widgetFile . fileName ) ,
277- generateReExport (
278- normalizePath ( `./${ removeExtension ( getRelativePath ( out . oldComponentsDir , widgetFilePath ) ) } ` )
279- . replace ( pathSeparator , '/' ) ,
280- removeExtension ( widgetFile . fileName ) ,
281- ) ,
282- ) ;
283274 } ) ;
284275
285276 writeFile ( out . indexFileName , generateIndex ( modulePaths ) , { encoding : 'utf8' } ) ;
277+
278+ if ( generateReexports && rawData . commonReexports ) {
279+ const commonPath = joinPaths ( out . componentsDir , 'common' ) ;
280+ if ( ! existsSync ( commonPath ) ) {
281+ mkdirSync ( commonPath ) ;
282+ }
283+ Object . keys ( rawData . commonReexports ) . forEach ( ( key ) => {
284+ writeFile (
285+ joinPaths ( commonPath , `${ key . replace ( 'common/' , '' ) } .ts` ) ,
286+ generateCommonReexports ( key , rawData . commonReexports [ key ] ) ,
287+ { encoding : 'utf8' } ,
288+ ) ;
289+ } ) ;
290+ }
286291}
287292
288293export default generate ;
0 commit comments