12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- const fs = require('fs');
- const startPath = 'src/Assets/Svgs';
- const rootRoute = '~/Assets/Svgs';
- const findSvg = (render = (route, name) => {}, importRender = (route, name) => {}, path = startPath, route = '') => {
- const currentRoute = (route ? route : '/');
- const names = fs.readdirSync(path, { withFileTypes: true })
- .filter(file => file.isFile() && file.name.endsWith('.svg'))
- .map(file => {
- let name = file.name.replace('.svg', '');
- return {
- name: name,
- filename: file.name,
- routePath: rootRoute + route + '/' + file.name,
- importName: ('svgs' + route + '/' + name).replace(/[\/\-]/g, '_')
- };
- });
- if(names.length > 0) {
- render(currentRoute, names);
- importRender(currentRoute, names);
- }
- let result = '';
- const list = fs.readdirSync(path, { withFileTypes: true })
- .filter(dir => dir.isDirectory())
- .map(dir => dir.name);
- for(let dir of list) {
- findSvg(render, importRender, path + '/' + dir, route + '/' + dir);
- }
- }
- /* Generate Svgs */
- const generateSvgs = () => {
- let svgs = '';
- let importers = '';
- findSvg((route, names) => {
- let svg = '';
- svg += `\t\t'${route}': {\n`;
- for(name of names) {
- svg += `\t\t\t'${name.name}': ${name.importName},\n`;
- }
- svg += `\t\t},\n`;
- svgs += svg;
- }, (route, names) => {
- for(name of names) {
- importers += `import ${name.importName} from '${name.routePath}';\n`;
- }
- });
- const string = `
- ${importers}
- export const Svgs = {
- ${svgs}
- };
- `;
-
- fs.writeFileSync('src/Generated/Svgs.js', string, 'utf8');
- }
- generateSvgs();
|