ten-design-vue
Version:
ten-vue
55 lines (46 loc) • 2.05 kB
JavaScript
/* eslint-disable */
var fs = require('fs');
var path = require('path');
var svgsPath = path.join(__dirname, '../svg/');
var targetJsonPath = path.join(__dirname, '../svg.json');
var svgMap = {};
var files = fs.readdirSync(svgsPath);
files = files.filter(function (file) {
return /[a-zA-Z_]+\.svg$/.test(file);
}); // console.log(files);
files.forEach(function (file) {
var content = fs.readFileSync(path.join(svgsPath, file), {
encoding: 'utf8'
});
if (file.indexOf('loading_gradient') === -1) {
content = content.replace(/<\?xml.+?>/, '');
content = content.replace(/<!--\s*Generator.+?-->/, '');
content = content.replace(/<title.+?>/, '');
content = content.replace(/<desc.+?>/, '');
content = content.replace('<rect fill="#FFFFFF" x="0" y="0" width="24" height="24"></rect>', ''); // content = content.replace(/fill(-rule)?=".*"/g, '');
content = content.replace(/"#000000"/gi, '"currentColor"');
content = content.replace(/"#333333"/gi, '"currentColor"');
content = content.replace(/fill="#.+?"/gi, 'fill="currentColor"');
content = content.replace(/\sid=".+?"/gi, '');
content = content.replace(/<svg.+?>/, function () {
return "<svg fill=\"currentColor\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\">";
});
content = content.replace(/\n\s+?\n+/g, '\n');
}
svgMap[file.replace('.svg', '')] = content; // console.log(content);
}); // fs.writeFileSync('./keys.json', JSON.stringify(Object.keys(svgMap), null, 2), { encoding: 'utf8' });
fs.writeFileSync(targetJsonPath, JSON.stringify(svgMap, null, 2), {
encoding: 'utf8'
}); // rewrite demo keys
var keysStr = JSON.stringify(Object.keys(svgMap)).replace(/\,/g, ', ').replace(/"/g, '\'');
var demoFilePath = path.join(__dirname, '../demos/base.vue');
var demoStr = fs.readFileSync(demoFilePath, {
encoding: 'utf8'
});
var newDemoStr = demoStr.replace(/icons:\s\[.*?\]/, function (str) {
return "icons: ".concat(keysStr);
});
fs.writeFileSync(demoFilePath, newDemoStr, {
encoding: 'utf8'
});
;