From 236db42b892b6ab165ea791563ce9c2f6b3a55bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Fernandes?= <49888340+joaopfernandesc@users.noreply.github.com> Date: Sat, 13 Dec 2025 01:19:25 +0100 Subject: [PATCH 1/2] feat: add package browser field update script --- package.json | 3 ++- scripts/update-browser-field.js | 45 +++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 scripts/update-browser-field.js diff --git a/package.json b/package.json index f72298813..7f3806005 100644 --- a/package.json +++ b/package.json @@ -97,8 +97,9 @@ "start": "dumi dev", "build": "dumi build", "compile": "father build && lessc assets/index.less assets/index.css", + "browser-field": "node scripts/update-browser-field.js", "gh-pages": "npm run build && father doc deploy", - "prepublishOnly": "npm run compile && rc-np", + "prepublishOnly": "npm run compile && npm run browser-field && rc-np", "lint": "eslint src/ --ext .ts,.tsx,.jsx,.js,.md", "lint:tsc": "tsc -p tsconfig.json --noEmit", "prettier": "prettier --write \"**/*.{ts,tsx,js,jsx,json,md}\"", diff --git a/scripts/update-browser-field.js b/scripts/update-browser-field.js new file mode 100644 index 000000000..9ccdd7a4c --- /dev/null +++ b/scripts/update-browser-field.js @@ -0,0 +1,45 @@ +#!/usr/bin/env node +const fs = require('fs'); +const path = require('path'); + +const rootDir = path.resolve(__dirname, '..'); +const pkgPath = path.join(rootDir, 'package.json'); + +const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')); + +const browserEntries = []; + +const addEntry = (from, to) => { + browserEntries.push([from, to]); +}; + +// Preserve previous behavior of preferring the ES build for the main entry. +addEntry('./lib/index.js', './es/index.js'); + +const addDirMappings = (dirPath, browserPrefix, targetPrefix) => { + if (!fs.existsSync(dirPath)) { + return; + } + + fs.readdirSync(dirPath) + .filter((file) => file.endsWith('.js')) + .sort() + .forEach((file) => { + const name = path.basename(file, '.js'); + const target = `${targetPrefix}/${file}`; + + addEntry(`${browserPrefix}/${name}`, target); + addEntry(`${browserPrefix}/${name}.js`, target); + }); +}; + +addDirMappings(path.join(rootDir, 'es', 'locale'), './locale', './es/locale'); +addDirMappings(path.join(rootDir, 'es', 'generate'), './generate', './es/generate'); + +const browser = Object.fromEntries(browserEntries.sort((a, b) => a[0].localeCompare(b[0]))); + +pkg.browser = browser; + +fs.writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`); + +console.log(`Updated browser field with ${browserEntries.length} entries.`); From c875a580c47725796fd166c5eda132d1bafce8ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Fernandes?= <49888340+joaopfernandesc@users.noreply.github.com> Date: Sat, 13 Dec 2025 01:34:35 +0100 Subject: [PATCH 2/2] fixup! feat: add package browser field update script --- scripts/update-browser-field.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/update-browser-field.js b/scripts/update-browser-field.js index 9ccdd7a4c..fee8cc97e 100644 --- a/scripts/update-browser-field.js +++ b/scripts/update-browser-field.js @@ -21,8 +21,9 @@ const addDirMappings = (dirPath, browserPrefix, targetPrefix) => { return; } - fs.readdirSync(dirPath) - .filter((file) => file.endsWith('.js')) + fs.readdirSync(dirPath, { withFileTypes: true }) + .filter((dirent) => dirent.isFile() && dirent.name.endsWith('.js')) + .map((dirent) => dirent.name) .sort() .forEach((file) => { const name = path.basename(file, '.js');