From 76f4263bc56f69eb7e629a666457166c2e14747e Mon Sep 17 00:00:00 2001 From: Martin Hochel Date: Tue, 21 Apr 2026 13:23:55 +0200 Subject: [PATCH 1/2] chore(react-icons): move build infra under ./scripts --- packages/react-icons/eslint.config.mjs | 4 +--- packages/react-icons/package.json | 10 +++++----- packages/react-icons/{ => scripts}/build.js | 0 .../react-icons/{ => scripts}/chunking-utils.js | 0 .../{ => scripts}/chunking-utils.test.js | 0 packages/react-icons/{ => scripts}/convert-font.js | 0 .../{ => scripts}/convert-font.utils.js | 0 .../{ => scripts}/convert-font.utils.test.js | 0 packages/react-icons/{ => scripts}/convert.js | 0 .../react-icons/{ => scripts}/convert.utils.js | 0 .../{ => scripts}/convert.utils.test.js | 0 .../react-icons/{ => scripts}/deprecated-atoms.js | 0 .../{ => scripts}/deprecated-atoms.test.js | 0 .../react-icons/{ => scripts}/merge-metadata.js | 0 .../react-icons/{ => scripts}/metadata.utils.js | 0 .../{ => scripts}/metadata.utils.test.js | 0 .../react-icons/{ => scripts}/per-icon.writer.js | 0 .../{ => scripts}/per-icon.writer.test.js | 0 .../react-icons/{ => scripts}/sprite.writer.js | 0 packages/react-icons/{ => scripts}/unfill.js | 0 packages/react-icons/tsconfig.utils.json | 14 +------------- 21 files changed, 7 insertions(+), 21 deletions(-) rename packages/react-icons/{ => scripts}/build.js (100%) rename packages/react-icons/{ => scripts}/chunking-utils.js (100%) rename packages/react-icons/{ => scripts}/chunking-utils.test.js (100%) rename packages/react-icons/{ => scripts}/convert-font.js (100%) rename packages/react-icons/{ => scripts}/convert-font.utils.js (100%) rename packages/react-icons/{ => scripts}/convert-font.utils.test.js (100%) rename packages/react-icons/{ => scripts}/convert.js (100%) rename packages/react-icons/{ => scripts}/convert.utils.js (100%) rename packages/react-icons/{ => scripts}/convert.utils.test.js (100%) rename packages/react-icons/{ => scripts}/deprecated-atoms.js (100%) rename packages/react-icons/{ => scripts}/deprecated-atoms.test.js (100%) rename packages/react-icons/{ => scripts}/merge-metadata.js (100%) rename packages/react-icons/{ => scripts}/metadata.utils.js (100%) rename packages/react-icons/{ => scripts}/metadata.utils.test.js (100%) rename packages/react-icons/{ => scripts}/per-icon.writer.js (100%) rename packages/react-icons/{ => scripts}/per-icon.writer.test.js (100%) rename packages/react-icons/{ => scripts}/sprite.writer.js (100%) rename packages/react-icons/{ => scripts}/unfill.js (100%) diff --git a/packages/react-icons/eslint.config.mjs b/packages/react-icons/eslint.config.mjs index 0b4a35b882f..db405ed2789 100644 --- a/packages/react-icons/eslint.config.mjs +++ b/packages/react-icons/eslint.config.mjs @@ -15,11 +15,9 @@ export default tseslint.config( 'src/fonts/', 'node_modules/', // build scripts and configs + 'scripts/**', '*.js', '*.config.js', - 'build.js', - 'convert.js', - 'convert-font.js', ], }, ...tseslint.configs.recommended, diff --git a/packages/react-icons/package.json b/packages/react-icons/package.json index d148f72d2c6..686a44964e3 100644 --- a/packages/react-icons/package.json +++ b/packages/react-icons/package.json @@ -14,9 +14,9 @@ "scripts": { "clean": "git clean -fXd lib/ lib-cjs/ intermediate/ src/ tmp/", "generate:assets-to-svg": "node ../../importer/generate.js --source=../../assets --dest=./intermediate --extension=svg --target=react", - "convert:svg": "node convert.js --source=./intermediate --dest=./src --perIconDest=./src/atoms/svg --spriteDest=./src/atoms/svg-sprite --headlessPerIconDest=./src/atoms/headless-svg --headlessSpriteDest=./src/atoms/headless-svg-sprite --rtl=./intermediate/rtl.json --metadata=./tmp/metadata-svg.json", - "convert:fonts": "node convert-font.js --source=./src/utils/fonts --dest=./src/fonts --perIconDest=./src/atoms/fonts --headlessPerIconDest=./src/atoms/headless-fonts --codepointDest=./src/utils/fonts --rtl=./intermediate/rtl.json --metadata=./tmp/metadata-font.json", - "convert:merge-metadata": "node merge-metadata.js --svgMetadata=./tmp/metadata-svg.json --fontMetadata=./tmp/metadata-font.json --output=./metadata.json", + "convert:svg": "node scripts/convert.js --source=./intermediate --dest=./src --perIconDest=./src/atoms/svg --spriteDest=./src/atoms/svg-sprite --headlessPerIconDest=./src/atoms/headless-svg --headlessSpriteDest=./src/atoms/headless-svg-sprite --rtl=./intermediate/rtl.json --metadata=./tmp/metadata-svg.json", + "convert:fonts": "node scripts/convert-font.js --source=./src/utils/fonts --dest=./src/fonts --perIconDest=./src/atoms/fonts --headlessPerIconDest=./src/atoms/headless-fonts --codepointDest=./src/utils/fonts --rtl=./intermediate/rtl.json --metadata=./tmp/metadata-font.json", + "convert:merge-metadata": "node scripts/merge-metadata.js --svgMetadata=./tmp/metadata-svg.json --fontMetadata=./tmp/metadata-font.json --output=./metadata.json", "generate:font-regular": "node ../../importer/generateFont.js --source=intermediate --dest=src/utils/fonts --iconType=Regular --codepoints=../../fonts/FluentSystemIcons-Regular.json", "generate:font-filled": "node ../../importer/generateFont.js --source=intermediate --dest=src/utils/fonts --iconType=Filled --codepoints=../../fonts/FluentSystemIcons-Filled.json", "generate:font-light": "node ../../importer/generateFont.js --source=intermediate --dest=src/utils/fonts --iconType=Light", @@ -24,10 +24,10 @@ "generate:font": "concurrently 'npm run generate:font-regular' 'npm run generate:font-filled' 'npm run generate:font-light' 'npm run generate:font-resizable'", "generate:rtl": "node ../../importer/rtlMetadata.js --source=../../assets --dest=./intermediate/rtl.json", "optimize": "svgo --config svgo.config.js --folder=./intermediate --precision=2 --quiet", - "unfill": "node unfill.js --source=./intermediate", + "unfill": "node scripts/unfill.js --source=./intermediate", "build:fonts-and-svg": "npm run generate:assets-to-svg && npm run generate:font && npm run generate:rtl && npm run optimize && npm run unfill", "build:generate-chunks-and-atoms": "npm run convert:svg && npm run convert:fonts && npm run convert:merge-metadata", - "build:js": "node build.js", + "build:js": "node scripts/build.js", "prebuild": "npm run clean", "build": "npm run build:fonts-and-svg && npm run build:generate-chunks-and-atoms && npm run build:js", "build-verify": "vitest run build-verify.test.js build-transforms.test.js", diff --git a/packages/react-icons/build.js b/packages/react-icons/scripts/build.js similarity index 100% rename from packages/react-icons/build.js rename to packages/react-icons/scripts/build.js diff --git a/packages/react-icons/chunking-utils.js b/packages/react-icons/scripts/chunking-utils.js similarity index 100% rename from packages/react-icons/chunking-utils.js rename to packages/react-icons/scripts/chunking-utils.js diff --git a/packages/react-icons/chunking-utils.test.js b/packages/react-icons/scripts/chunking-utils.test.js similarity index 100% rename from packages/react-icons/chunking-utils.test.js rename to packages/react-icons/scripts/chunking-utils.test.js diff --git a/packages/react-icons/convert-font.js b/packages/react-icons/scripts/convert-font.js similarity index 100% rename from packages/react-icons/convert-font.js rename to packages/react-icons/scripts/convert-font.js diff --git a/packages/react-icons/convert-font.utils.js b/packages/react-icons/scripts/convert-font.utils.js similarity index 100% rename from packages/react-icons/convert-font.utils.js rename to packages/react-icons/scripts/convert-font.utils.js diff --git a/packages/react-icons/convert-font.utils.test.js b/packages/react-icons/scripts/convert-font.utils.test.js similarity index 100% rename from packages/react-icons/convert-font.utils.test.js rename to packages/react-icons/scripts/convert-font.utils.test.js diff --git a/packages/react-icons/convert.js b/packages/react-icons/scripts/convert.js similarity index 100% rename from packages/react-icons/convert.js rename to packages/react-icons/scripts/convert.js diff --git a/packages/react-icons/convert.utils.js b/packages/react-icons/scripts/convert.utils.js similarity index 100% rename from packages/react-icons/convert.utils.js rename to packages/react-icons/scripts/convert.utils.js diff --git a/packages/react-icons/convert.utils.test.js b/packages/react-icons/scripts/convert.utils.test.js similarity index 100% rename from packages/react-icons/convert.utils.test.js rename to packages/react-icons/scripts/convert.utils.test.js diff --git a/packages/react-icons/deprecated-atoms.js b/packages/react-icons/scripts/deprecated-atoms.js similarity index 100% rename from packages/react-icons/deprecated-atoms.js rename to packages/react-icons/scripts/deprecated-atoms.js diff --git a/packages/react-icons/deprecated-atoms.test.js b/packages/react-icons/scripts/deprecated-atoms.test.js similarity index 100% rename from packages/react-icons/deprecated-atoms.test.js rename to packages/react-icons/scripts/deprecated-atoms.test.js diff --git a/packages/react-icons/merge-metadata.js b/packages/react-icons/scripts/merge-metadata.js similarity index 100% rename from packages/react-icons/merge-metadata.js rename to packages/react-icons/scripts/merge-metadata.js diff --git a/packages/react-icons/metadata.utils.js b/packages/react-icons/scripts/metadata.utils.js similarity index 100% rename from packages/react-icons/metadata.utils.js rename to packages/react-icons/scripts/metadata.utils.js diff --git a/packages/react-icons/metadata.utils.test.js b/packages/react-icons/scripts/metadata.utils.test.js similarity index 100% rename from packages/react-icons/metadata.utils.test.js rename to packages/react-icons/scripts/metadata.utils.test.js diff --git a/packages/react-icons/per-icon.writer.js b/packages/react-icons/scripts/per-icon.writer.js similarity index 100% rename from packages/react-icons/per-icon.writer.js rename to packages/react-icons/scripts/per-icon.writer.js diff --git a/packages/react-icons/per-icon.writer.test.js b/packages/react-icons/scripts/per-icon.writer.test.js similarity index 100% rename from packages/react-icons/per-icon.writer.test.js rename to packages/react-icons/scripts/per-icon.writer.test.js diff --git a/packages/react-icons/sprite.writer.js b/packages/react-icons/scripts/sprite.writer.js similarity index 100% rename from packages/react-icons/sprite.writer.js rename to packages/react-icons/scripts/sprite.writer.js diff --git a/packages/react-icons/unfill.js b/packages/react-icons/scripts/unfill.js similarity index 100% rename from packages/react-icons/unfill.js rename to packages/react-icons/scripts/unfill.js diff --git a/packages/react-icons/tsconfig.utils.json b/packages/react-icons/tsconfig.utils.json index 03559aacb09..5cb54ea44c8 100644 --- a/packages/react-icons/tsconfig.utils.json +++ b/packages/react-icons/tsconfig.utils.json @@ -13,17 +13,5 @@ "strictNullChecks": true, "pretty": true }, - "include": [ - "convert.js", - "convert-font.js", - "convert.utils.js", - "convert-font.utils.js", - "merge-metadata.js", - "metadata.utils.js", - "sprite.writer.js", - "per-icon.writer.js", - "chunking-utils.js", - "build.js", - "deprecated-atoms.js" - ] + "include": ["scripts/"] } From 2de3375d07b1e6a18b3939a6081043d02563fae1 Mon Sep 17 00:00:00 2001 From: Martin Hochel Date: Tue, 21 Apr 2026 14:59:29 +0200 Subject: [PATCH 2/2] fixup! chore(react-icons): move build infra under ./scripts --- packages/react-icons/scripts/build.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/react-icons/scripts/build.js b/packages/react-icons/scripts/build.js index 05ccbb4442a..9a32e5908e3 100644 --- a/packages/react-icons/scripts/build.js +++ b/packages/react-icons/scripts/build.js @@ -9,7 +9,7 @@ const { join, basename } = require('node:path'); const glob = require('glob'); const { transformSync } = require('@babel/core'); -main(); +main({ root: join(__dirname, '..') }); /** * Builds source TypeScript and copys assets to the output directories. @@ -17,9 +17,11 @@ main(); * It transpiles TypeScript files to both ESNext and CommonJS formats, * applies Babel transformations, and copies font assets. * It also creates raw style copies for .styles.js files. + * + * @param {{ root: string; }} options */ -function main() { - const projectRoot = __dirname; +function main(options) { + const projectRoot = options.root; transpileTsc({ moduleFormat: 'esnext', outDir: 'lib' }, projectRoot); transpileTsc({ moduleFormat: 'commonjs', outDir: 'lib-cjs' }, projectRoot);