From 38b14425a087ebf346a0ab6839211f6cda4ae2d1 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Mon, 27 Sep 2021 20:52:21 +0200 Subject: [PATCH] try to speed up the font build --- .github/workflows/release.yml | 5 +---- scripts/outlineSvg.js | 33 ++++++++++++++++++--------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5296d6b8a..35c85df02 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -275,9 +275,6 @@ jobs: - name: Install run: yarn --prefer-offline - - name: "Outline SVG" - run: yarn build:outline-icons - - name: Build Icon Font run: | mkdir build @@ -285,7 +282,7 @@ jobs: command='' for name in "${list[@]}" do - subcommand="(fontcustom compile "./converted_icons${name}" -h -n "lucide${name}" -o ./tmp -F && mv ./tmp/* build)" + subcommand="(yarn build:outline-icons --outputDir=converted_icons${name} && fontcustom compile "./converted_icons${name}" -h -n "lucide${name}" -o ./build -F)" if [ -z "$command" ] then command="$subcommand"; diff --git a/scripts/outlineSvg.js b/scripts/outlineSvg.js index de70e6a39..b2a848685 100644 --- a/scripts/outlineSvg.js +++ b/scripts/outlineSvg.js @@ -1,9 +1,13 @@ import { promises as fs } from 'fs'; import outlineStroke from 'svg-outline-stroke'; import { parse, stringify } from 'svgson'; // eslint-disable-line import/no-extraneous-dependencies +import getArgumentOptions from 'minimist'; const inputDir = `./icons/`; -const outputDirs = { +const cliArguments = getArgumentOptions(process.argv.slice(2)); +const { outputDir } = cliArguments; + +const widthMap = { 'converted_icons-200': '1', 'converted_icons-300': '1.5', converted_icons: '2', @@ -39,8 +43,7 @@ function transformBackwards(node) { async function init() { console.time('icon outliner'); try { - const createDirectories = Object.keys(outputDirs).map(directory => fs.mkdir(`./${directory}`)); - await Promise.all(createDirectories); + await fs.mkdir(`./${outputDir}`); const icons = await fs.readdir(inputDir); const parsedIconNodes = await Promise.all( @@ -53,19 +56,19 @@ async function init() { }), ); - await Promise.all( - Object.entries(outputDirs).map(async ([directory, width]) => { - await Promise.all( - parsedIconNodes.map(async ([file, iconNode]) => { - iconNode.attributes['stroke-width'] = width; - const outlined = await outlineStroke(stringify(iconNode)); - const outlinedWithoutAttrs = await parse(outlined, { - transformNode: transformBackwards, - }); + if (widthMap?.[outputDir] === undefined) { + throw new Error(`Could not find the directory: ${outputDir}.`) + } - await fs.writeFile(`./${directory}/${file}`, stringify(outlinedWithoutAttrs)); - }), - ); + await Promise.all( + parsedIconNodes.map(async ([file, iconNode]) => { + iconNode.attributes['stroke-width'] = widthMap[outputDir]; + const outlined = await outlineStroke(stringify(iconNode)); + const outlinedWithoutAttrs = await parse(outlined, { + transformNode: transformBackwards, + }); + + await fs.writeFile(`./${outputDir}/${file}`, stringify(outlinedWithoutAttrs)); }), );