diff options
Diffstat (limited to 'scripts/build-react.js')
-rw-r--r-- | scripts/build-react.js | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/scripts/build-react.js b/scripts/build-react.js index 17cbb742..2aa87d0e 100644 --- a/scripts/build-react.js +++ b/scripts/build-react.js @@ -1,14 +1,23 @@ -const glob = require('glob') -const path = require('path') -const fs = require('fs') -const { default: svgr } = require('@svgr/core') -const { asyncForEach, camelize } = require('./utils') +#!/usr/bin/env node + +import glob from 'glob' +import path from 'path' +import fs from 'fs' +import svgr from '@svgr/core' +import { asyncForEach, camelize, optimizeSvgCode } from './utils' const packageDir = path.resolve(__dirname, '../packages/icons-react') -const optimizeSvgCode = function (svgCode) { - return svgCode - .replace('<path stroke="none" d="M0 0h24v24H0z" fill="none"/>', '') +const componentTemplate = function template( + { template }, + opts, + { imports, componentName, props, jsx, exports }, +) { + return template.ast` + ${imports} + function ${componentName}({ size = 24, color = "currentColor", stroke = 2, ...props }) { return (${jsx}); } + ${exports} + `; } const componentName = function (file) { @@ -33,16 +42,12 @@ type TablerIcon = FC<TablerIconProps>;\n\n` fileName = path.basename(file, '.svg') + '.js', iconComponentName = componentName(file) - if(fs.existsSync(`${packageDir}/icons/`)) { - fs.rmSync(`${packageDir}/icons/`, { recursive: true }) - } - fs.mkdirSync(`${packageDir}/icons/`, { recursive: true }) await svgr(svgCode, { icon: false, svgProps: { width: '{size}', height: '{size}', strokeWidth: '{stroke}', stroke: '{color}' }, - template: require('./svgr-template') + template: componentTemplate }, { componentName: iconComponentName }).then(jsCode => { fs.writeFileSync(`${packageDir}/icons/${fileName}`, jsCode) |