Skip to content

Commit

Permalink
Improved ESM support for all public packages
Browse files Browse the repository at this point in the history
- Updated the building of ESM modules to run `tsc-alias` to append the `.js` extensions onto the imports for ESM builds
- For those builds that use `lodash` also added a replacer for the `tsc-alias` that switches things to use `lodash-es`
  • Loading branch information
heath-freenome committed Mar 5, 2025
1 parent fe30e3b commit 9a86802
Show file tree
Hide file tree
Showing 37 changed files with 511 additions and 19 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -140,3 +140,5 @@ out/

# typescript tsbuildinfo
*.tsbuildinfo
lodashReplacer.js

7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,14 @@ should change the heading of the (upcoming) version to include a major version b

## @rjsf/utils

- fixed issue with customValidate errors are not cleared when the form is valid [4365](https://github.com/rjsf-team/react-jsonschema-form/pull/4365) due to regression
- Fixed issue with customValidate errors are not cleared when the form is valid [4365](https://github.com/rjsf-team/react-jsonschema-form/pull/4365) due to regression
- Add missing `experimental_customMergeAllOf` argument to `ensureFormDataMatchingSchema` introduced by [4388](https://github.com/rjsf-team/react-jsonschema-form/pull/4388)

## Dev / docs / playground

- Improved the ESM support for all public packages by adding explicit `exports` to each public `package.json`
- Updated the ESM builds to use `tsc-alias` to add `.js` onto all ESM imports

# 5.24.3

## @rjsf/utils
Expand Down
66 changes: 66 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
"prettier": "^2.8.8",
"rimraf": "^5.0.5",
"ts-jest": "^29.1.2",
"tsc-alias": "^1.8.11",
"tslib": "^2.6.2",
"typescript": "^4.9.5"
},
Expand All @@ -79,6 +80,5 @@
"packages/validator-ajv6",
"packages/validator-ajv8",
"packages/snapshot-tests"
],
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
]
}
9 changes: 8 additions & 1 deletion packages/antd/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,15 @@
"main": "dist/index.js",
"module": "lib/index.js",
"typings": "lib/index.d.ts",
"exports": {
"require": "./dist/index.js",
"node": "./dist/index.js",
"import": "./lib/index.js",
"types": "./lib/index.d.ts"
},
"scripts": {
"build:ts": "tsc -b",
"compileReplacer": "tsc -p tsconfig.replacer.json",
"build:ts": "tsc -b tsconfig.build.json && tsc-alias -p tsconfig.build.json",
"build:cjs": "esbuild ./src/index.ts --bundle --outfile=dist/index.js --sourcemap --packages=external --format=cjs",
"build:esm": "esbuild ./src/index.ts --bundle --outfile=dist/antd.esm.js --sourcemap --packages=external --format=esm",
"build:umd": "rollup dist/antd.esm.js --format=umd --file=dist/antd.umd.js --name=@rjsf/antd",
Expand Down
22 changes: 22 additions & 0 deletions packages/antd/tsconfig.build.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"extends": "../../tsconfig.build.json",
"compilerOptions": {
"outDir": "./lib"
},
"files": [],
"references": [
{
"path": "./src"
}
],
"tsc-alias": {
"resolveFullPaths": true,
"verbose": true,
"replacers": {
"lodash": {
"enabled": true,
"file": "lodashReplacer.js"
}
}
}
}
15 changes: 15 additions & 0 deletions packages/antd/tsconfig.replacer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es2017",
"outDir": "./",
"skipLibCheck": true,
},
"files": [
"../../tsc-alias-replacer/lodashReplacer.ts"
],
"exclude": [
"./src",
"./test"
]
}
8 changes: 7 additions & 1 deletion packages/bootstrap-4/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@
"main": "dist/index.js",
"module": "lib/index.js",
"typings": "lib/index.d.ts",
"exports": {
"require": "./dist/index.js",
"node": "./dist/index.js",
"import": "./lib/index.js",
"types": "./lib/index.d.ts"
},
"description": "Bootstrap 4 theme, fields and widgets for react-jsonschema-form",
"files": [
"dist",
Expand All @@ -15,7 +21,7 @@
"url": "git+https://github.com/rjsf-team/react-jsonschema-form.git"
},
"scripts": {
"build:ts": "tsc -b",
"build:ts": "tsc -b tsconfig.build.json && tsc-alias -p tsconfig.build.json",
"build:cjs": "esbuild ./src/index.ts --bundle --outfile=dist/index.js --sourcemap --packages=external --format=cjs",
"build:esm": "esbuild ./src/index.ts --bundle --outfile=dist/bootstrap-4.esm.js --sourcemap --packages=external --format=esm",
"build:umd": "rollup dist/bootstrap-4.esm.js --format=umd --file=dist/bootstrap-4.umd.js --name=@rjsf/bootstrap-4",
Expand Down
12 changes: 12 additions & 0 deletions packages/bootstrap-4/tsconfig.build.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"extends": "../../tsconfig.build.json",
"compilerOptions": {
"outDir": "./lib"
},
"files": [],
"references": [
{
"path": "./src"
}
]
}
8 changes: 7 additions & 1 deletion packages/chakra-ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,19 @@
"main": "dist/index.js",
"module": "lib/index.js",
"typings": "lib/index.d.ts",
"exports": {
"require": "./dist/index.js",
"node": "./dist/index.js",
"import": "./lib/index.js",
"types": "./lib/index.d.ts"
},
"files": [
"dist",
"lib",
"src"
],
"scripts": {
"build:ts": "tsc -b",
"build:ts": "tsc -b tsconfig.build.json && tsc-alias -p tsconfig.build.json",
"build:cjs": "esbuild ./src/index.ts --bundle --outfile=dist/index.js --sourcemap --packages=external --format=cjs",
"build:esm": "esbuild ./src/index.ts --bundle --outfile=dist/chakra-ui.esm.js --sourcemap --packages=external --format=esm",
"build:umd": "rollup dist/chakra-ui.esm.js --format=umd --file=dist/chakra-ui.umd.js --name=@rjsf/chakra-ui",
Expand Down
16 changes: 16 additions & 0 deletions packages/chakra-ui/tsconfig.build.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"extends": "../../tsconfig.build.json",
"compilerOptions": {
"outDir": "./lib"
},
"files": [],
"references": [
{
"path": "./src"
}
],
"tsc-alias": {
"resolveFullPaths": true,
"verbose": true,
}
}
9 changes: 8 additions & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
"version": "5.24.3",
"description": "A simple React component capable of building HTML forms out of a JSON schema.",
"scripts": {
"build:ts": "tsc -b",
"compileReplacer": "tsc -p tsconfig.replacer.json",
"build:ts": "npm run compileReplacer && rimraf ./lib && tsc -b tsconfig.build.json && tsc-alias -p tsconfig.build.json",
"build:cjs": "esbuild ./src/index.ts --bundle --outfile=dist/index.js --sourcemap --packages=external --format=cjs",
"build:esm": "esbuild ./src/index.ts --bundle --outfile=dist/index.esm.js --sourcemap --packages=external --format=esm",
"build:umd": "rollup dist/index.esm.js --format=umd --file=dist/core.umd.js --name=JSONSchemaForm",
Expand All @@ -27,6 +28,12 @@
"main": "dist/index.js",
"module": "lib/index.js",
"typings": "lib/index.d.ts",
"exports": {
"require": "./dist/index.js",
"node": "./dist/index.js",
"import": "./lib/index.js",
"types": "./lib/index.d.ts"
},
"files": [
"dist",
"lib",
Expand Down
22 changes: 22 additions & 0 deletions packages/core/tsconfig.build.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"extends": "../../tsconfig.build.json",
"compilerOptions": {
"outDir": "./lib"
},
"files": [],
"references": [
{
"path": "./src"
}
],
"tsc-alias": {
"resolveFullPaths": true,
"verbose": true,
"replacers": {
"lodash": {
"enabled": true,
"file": "lodashReplacer.js"
}
}
}
}
15 changes: 15 additions & 0 deletions packages/core/tsconfig.replacer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es2017",
"outDir": "./",
"skipLibCheck": true,
},
"files": [
"../../tsc-alias-replacer/lodashReplacer.ts"
],
"exclude": [
"./src",
"./test"
]
}
8 changes: 7 additions & 1 deletion packages/fluent-ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,20 @@
"main": "dist/index.js",
"module": "lib/index.js",
"typings": "lib/index.d.ts",
"exports": {
"require": "./dist/index.js",
"node": "./dist/index.js",
"import": "./lib/index.js",
"types": "./lib/index.d.ts"
},
"description": "Fluent UI theme, fields and widgets for react-jsonschema-form",
"files": [
"dist",
"lib",
"src"
],
"scripts": {
"build:ts": "tsc -b",
"build:ts": "tsc -b tsconfig.build.json && tsc-alias -p tsconfig.build.json",
"build:cjs": "esbuild ./src/index.ts --bundle --outfile=dist/index.js --sourcemap --packages=external --format=cjs",
"build:esm": "esbuild ./src/index.ts --bundle --outfile=dist/fluent-ui.esm.js --sourcemap --packages=external --format=esm",
"build:umd": "rollup dist/fluent-ui.esm.js --format=umd --file=dist/fluent-ui.umd.js --name=@rjsf/fluent-ui",
Expand Down
16 changes: 16 additions & 0 deletions packages/fluent-ui/tsconfig.build.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"extends": "../../tsconfig.build.json",
"compilerOptions": {
"outDir": "./lib"
},
"files": [],
"references": [
{
"path": "./src"
}
],
"tsc-alias": {
"resolveFullPaths": true,
"verbose": true,
}
}
8 changes: 7 additions & 1 deletion packages/fluentui-rc/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "5.24.3",
"description": "FluentUI React Components theme, fields and widgets for react-jsonschema-form",
"scripts": {
"build:ts": "tsc -b",
"build:ts": "tsc -b tsconfig.build.json && tsc-alias -p tsconfig.build.json",
"build:cjs": "esbuild ./src/index.ts --bundle --outfile=dist/index.js --sourcemap --packages=external --format=cjs",
"build:esm": "esbuild ./src/index.ts --bundle --outfile=dist/index.esm.js --sourcemap --packages=external --format=esm",
"build:umd": "rollup dist/index.esm.js --format=umd --file=dist/core.umd.js --name=JSONSchemaForm",
Expand All @@ -27,6 +27,12 @@
"main": "dist/index.js",
"module": "lib/index.js",
"typings": "lib/index.d.ts",
"exports": {
"require": "./dist/index.js",
"node": "./dist/index.js",
"import": "./lib/index.js",
"types": "./lib/index.d.ts"
},
"files": [
"dist",
"lib",
Expand Down
Loading

0 comments on commit 9a86802

Please sign in to comment.