44 lines
1 KiB
JavaScript
44 lines
1 KiB
JavaScript
const fs = require('fs')
|
|
|
|
const componentsDirectory = `${__dirname}/../src/components`
|
|
const indexFile = `${componentsDirectory}/index.ts`
|
|
|
|
// Get directories and files in the components directory
|
|
const filesAndDirectories = fs.readdirSync(componentsDirectory)
|
|
|
|
const [files, directories] = filesAndDirectories.reduce(
|
|
(acc, fileOrDirectory) => {
|
|
if (
|
|
fs.statSync(`${componentsDirectory}/${fileOrDirectory}`).isDirectory()
|
|
) {
|
|
acc[1].push(fileOrDirectory)
|
|
} else {
|
|
acc[0].push(fileOrDirectory)
|
|
}
|
|
|
|
return acc
|
|
},
|
|
[[], []],
|
|
)
|
|
|
|
// Write them
|
|
fs.writeFileSync(
|
|
indexFile,
|
|
filesAndDirectories
|
|
.reduce((acc, fileOrDirectory) => {
|
|
if (['.DS_Store', 'index.ts'].includes(fileOrDirectory)) {
|
|
return [...acc]
|
|
}
|
|
|
|
const componentName = fileOrDirectory.replace('.tsx', '')
|
|
|
|
return [...acc, `export { ${componentName} } from './${componentName}'`]
|
|
}, [])
|
|
.join('\n'),
|
|
{
|
|
flag: 'w',
|
|
},
|
|
)
|
|
|
|
console.log(`Rebuilt component index file at ${indexFile}`)
|