import { readdirSync, writeFileSync } from 'fs' import camelCase from 'camelcase' const iconDir = './src/assets/icons/ui' const targetDir = './src/components/icon/UiIcon.vue' const template = (importContent, dataContent) => ` ` const importTemplate = (name, camelCaseName) => `import ${camelCaseName} from '@/assets/icons/ui/${name}.svg';\n` const dataTemplate = (name, camelCaseName) => `'${name}':${camelCaseName},\n` let importContent = '', dataContent = '' readdirSync(iconDir).forEach((file) => { if (/(.*)\.svg$/.test(file)) { // console.log(file) const name = file.match(/(.*)\.svg$/)[1] const camelCaseName = camelCase(name) importContent += importTemplate(name, camelCaseName) dataContent += dataTemplate(name, camelCaseName) } else { return false } }) const vueContent = template(importContent, dataContent) writeFileSync(targetDir, vueContent, { flag: 'w+' })