使用node 生成目录下的文件导出

98 阅读1分钟

#记录一下当require.context 在typescript中导出无法引入,使用node生成ts导出文件

const fs = require('fs')
const path = require('path')

const names = {}

function getNames(dir) {
    const files = fs.readdirSync(dir)
    files.forEach(file => {
        const stat = fs.statSync(path.join(dir, file))
        if (stat.isDirectory()) {
            getNames(path.join(dir, file))
        } else {
            console.log('path.basename(file, '.js')', path.basename(file, '.js'))
            if (path.basename(file, '.js') !== 'index' && path.basename(file, '.ts') !== 'index') {
                names[path.basename(file, path.extname(file))] = path.join(dir, path.basename(file, path.extname(file)))
            }
        }
    })
}

getNames('./')


const codes = []
Object.keys(names).forEach(name => {
    codes.push(`import ${name} from './${names[name]}'`)
})
const exportString = `export {${Object.keys(names).join(',\n')}}`

codes.push(exportString)

fs.writeFileSync('index.ts', codes.join('\n'))