@mindinventory/react-native-boilerplate
Version:
47 lines (38 loc) • 1.18 kB
JavaScript
const fs = require('fs');
const path = require('path');
const iconFileNames = () => {
const array = fs
.readdirSync('../src/assets/svgIcons')
.filter(file => {
return file.endsWith('.svg');
})
.map(file => {
return file.replace('@2x.svg', '').replace('@3x.svg', '');
});
return Array.from(new Set(array));
};
const generate = () => {
let properties = iconFileNames()
.map(name => {
const iconName = path.parse(name).name.toUpperCase();
return `import ${iconName}_ICON from './${name}';`;
})
.join('\n');
let exportFiles = iconFileNames()
.map((name, index) => {
const iconName = path.parse(name).name.toUpperCase();
return `${iconName} = ${index + 1},`;
})
.join('\n ');
let mapper = iconFileNames()
.map((name, index) => {
const iconName = path.parse(name).name.toUpperCase();
return `${index + 1}: ${iconName}_ICON,`;
})
.join('\n ');
const string = `${properties}\n\nexport enum SVGIcons {\n ${exportFiles}
}\n\nexport const SVGIconsMapper = {\n ${mapper}
};\n`;
fs.writeFileSync('../src/assets/svgIcons/index.ts', string, 'utf8');
};
generate();