import * as _ from "lodash"; import * as fs from "fs-extra"; export const generateComponentFolders = (data: any) => { const { filteredComponents, componentFolder, templateFolder } = data; // loop through each _.forEach(filteredComponents, component => { // create folder in each fs.ensureDir(`${componentFolder}/${component.name}`); }); // generate index.ts fs.readFile( `${templateFolder}/components/index.ts.template`, "utf8", (err, data) => { if (err) return console.error(err); // loop over array of components and generate a line of content for each const templateString = `export { default as <%= name %> } from "./<%= name %>/";`; // save results as export_block const export_block = _.join( _.map(filteredComponents, component => _.template(templateString)({ name: component.name }) ), "\n" ); // merge into the index.ts.template const indexTs = _.template(data)({ export_block }); // create file (put into components folder) fs.outputFile(`${componentFolder}/index.ts`, indexTs); } ); };