diff options
author | codecalm <codecalm@gmail.com> | 2022-04-17 20:43:39 +0200 |
---|---|---|
committer | codecalm <codecalm@gmail.com> | 2022-04-17 20:43:39 +0200 |
commit | 6a5f5bf0283458aabdcc34eb695175cfea4a632f (patch) | |
tree | 58fe67c2cc4529730890e032da903891e85d12a6 /scripts/build-react.js | |
parent | 2.1.0 (diff) | |
download | tabler-icons-v2.0.tar.xz |
build react scriptv2.0
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) |