1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /**
- * Convert svg elements into React components
- */
- const { resolve } = require('path');
- const build = require('../../../scripts/build-svg');
- // Semi Icon
- const entryDir = resolve(__dirname, '../src/svgs');
- const outDir = resolve(__dirname, '../src/icons');
- const customTemplate = ({ template }, opts, { imports, interfaces, componentName, props, jsx, exports }) => {
- const plugins = ['jsx'];
- if (opts.typescript) {
- plugins.push('typescript');
- }
- const typeScriptTpl = template.smart({ plugins });
- return typeScriptTpl.ast`${imports}
- import { convertIcon } from '../components/Icon';
- ${interfaces}
- function ${componentName}(${props}) {
- return ${jsx};
- }
- const IconComponent = convertIcon(${componentName}, '${opts.iconType}');
- export default IconComponent;
- `;
- };
- const svgoPlugins = [
- // {
- // name: 'convertColors',
- // params: { currentColor: /^(?!url|none)./ },
- // },
- {
- name: 'cleanupListOfValues',
- active: true,
- },
- {
- name: 'removeStyleElement',
- active: true,
- },
- {
- name: 'removeViewBox',
- active: false,
- },
- {
- name: 'removeDimensions',
- active: true,
- },
- ];
- // Semi icon library decolor
- build(entryDir, outDir, 'Icon', '', svgoPlugins, { typescript: true, icon: true, template: customTemplate });
|