UNPKG

wangbd-myui

Version:

MY前端基础框架核心组件库

47 lines (43 loc) 1.54 kB
const fs = require('fs') const {logWithSpinner, stopSpinner, failSpinner} = require('@vue/cli-shared-utils') const utils = require('../utils') const core = require('../index') // const constant = require('../constant') const render = require('../renders/svg-component') const regex = /(<path[\s\S]*<\/path>)|(<path[\s\S]*\/>)/gi const fillRegex = /\sfill="[\w#]*"/gi const svgFiles = utils.getFiles(core.SVGSrcPath) const saveDir = core.SVGIconPath const imports = [] logWithSpinner('生成SVG组件') try { svgFiles.forEach(file => { const content = fs.readFileSync(file, 'utf-8') const matches = content.match(regex) || [] const cleanPaths = matches.map(n => { const fills = n.match(fillRegex) || [] fills.forEach(f => { n = n.replace(f, '') }) n = n.replace(/\s*\/>/gi, '/>') .replace(/<g>/gi, '') .replace(/<\/g>/gi, '') .replace(/\n/gi, ' ') .replace(/\t/gi, ' ') .replace(/\s\s/gi, ' ') return n }) if (cleanPaths.length > 0) { const fileMsg = utils.parsePath(file) const importPath = `import './${fileMsg.name}'` const fileContent = render({paths: cleanPaths, name: fileMsg.name}) utils.writeFile(utils.join(saveDir, fileMsg.name + '.js'), fileContent) imports.push(importPath) } }) utils.writeFile(utils.join(saveDir, 'index.js'), imports.join('\n')) stopSpinner() } catch (e) { utils.log(e, 'error') failSpinner('生成SVG组件失败!') }