rsbuild-plugin-react-router 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -3
- package/dist/index.cjs +4 -5
- package/dist/index.js +4 -5
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -186,8 +186,14 @@ If none are found, it falls back to defaults.
|
|
|
186
186
|
|
|
187
187
|
### Framework Mode
|
|
188
188
|
|
|
189
|
-
React Router Framework Mode is implemented as a Vite plugin
|
|
190
|
-
plugin
|
|
189
|
+
React Router "Framework Mode" is implemented as a Vite plugin, but this Rsbuild
|
|
190
|
+
plugin aims to provide equivalent **framework-mode behaviors** (typegen, Route
|
|
191
|
+
Module API types, route module splitting, SPA/SSR/prerender strategies) on top
|
|
192
|
+
of Rsbuild/Rspack.
|
|
193
|
+
|
|
194
|
+
In practice, you should be able to use the `@react-router/dev/*` config + routes
|
|
195
|
+
APIs, import generated `./+types/*` in route modules, and use the standard
|
|
196
|
+
`entry.client`/`entry.server` entrypoints like you would in the official setup.
|
|
191
197
|
|
|
192
198
|
### FAQ
|
|
193
199
|
|
|
@@ -647,7 +653,15 @@ The plugin automatically:
|
|
|
647
653
|
|
|
648
654
|
## React Router Framework Mode
|
|
649
655
|
|
|
650
|
-
React Router "Framework Mode" wraps Data Mode using a Vite plugin. This Rsbuild
|
|
656
|
+
React Router "Framework Mode" wraps Data Mode using a Vite plugin. This Rsbuild
|
|
657
|
+
plugin aims to match the important behaviors without depending on Vite:
|
|
658
|
+
|
|
659
|
+
- Typegen + Route Module API types (`./+types/*`)
|
|
660
|
+
- Route module splitting (`future.v8_splitRouteModules`)
|
|
661
|
+
- SPA mode (`ssr: false`), SSR mode, and static prerendering (`prerender`)
|
|
662
|
+
|
|
663
|
+
Some Vite-specific integrations (for example Vite's environment API + critical
|
|
664
|
+
CSS endpoint) are not supported 1:1.
|
|
651
665
|
|
|
652
666
|
## Examples
|
|
653
667
|
|
package/dist/index.cjs
CHANGED
|
@@ -163,9 +163,10 @@ const RESOLVABLE_BUILD_EXPORTS = new Set([
|
|
|
163
163
|
}
|
|
164
164
|
}, bundle = await tryLoadBundle('static/js/app') ?? await tryLoadBundle('app');
|
|
165
165
|
if (!bundle || !bundle.routes) throw Error('Server bundle not found or invalid');
|
|
166
|
-
let
|
|
167
|
-
|
|
168
|
-
|
|
166
|
+
let rr = await import("react-router"), nfs = await import("@remix-run/node-fetch-server");
|
|
167
|
+
if ('function' != typeof rr.createRequestHandler) throw Error('[rsbuild-plugin-react-router] Missing `createRequestHandler` export from `react-router`');
|
|
168
|
+
if ('function' != typeof nfs.createRequestListener) throw Error('[rsbuild-plugin-react-router] Missing `createRequestListener` export from `@remix-run/node-fetch-server`');
|
|
169
|
+
let normalizedBuild = normalizeBuildModule(bundle), build = await resolveBuildExports(normalizedBuild), requestHandler = rr.createRequestHandler(build, 'development'), listener = nfs.createRequestListener((request)=>requestHandler(request));
|
|
169
170
|
await listener(req, res);
|
|
170
171
|
} catch (error) {
|
|
171
172
|
console.error('SSR Error:', error), next(error);
|
|
@@ -1601,8 +1602,6 @@ const redirectStatusCodes = new Set([
|
|
|
1601
1602
|
},
|
|
1602
1603
|
dev: {
|
|
1603
1604
|
writeToDisk: !0,
|
|
1604
|
-
hmr: !1,
|
|
1605
|
-
liveReload: !0,
|
|
1606
1605
|
setupMiddlewares: pluginOptions.customServer || !ssr ? [] : [
|
|
1607
1606
|
(middlewares, server)=>{
|
|
1608
1607
|
middlewares.push(createDevServerMiddleware(server));
|
package/dist/index.js
CHANGED
|
@@ -1312,8 +1312,6 @@ let redirectStatusCodes = new Set([
|
|
|
1312
1312
|
},
|
|
1313
1313
|
dev: {
|
|
1314
1314
|
writeToDisk: !0,
|
|
1315
|
-
hmr: !1,
|
|
1316
|
-
liveReload: !0,
|
|
1317
1315
|
setupMiddlewares: pluginOptions.customServer || !ssr ? [] : [
|
|
1318
1316
|
(middlewares, server)=>{
|
|
1319
1317
|
middlewares.push(async (req, res, next)=>{
|
|
@@ -1327,9 +1325,10 @@ let redirectStatusCodes = new Set([
|
|
|
1327
1325
|
}
|
|
1328
1326
|
}, bundle = await tryLoadBundle('static/js/app') ?? await tryLoadBundle('app');
|
|
1329
1327
|
if (!bundle || !bundle.routes) throw Error('Server bundle not found or invalid');
|
|
1330
|
-
let
|
|
1331
|
-
|
|
1332
|
-
|
|
1328
|
+
let rr = await import("react-router"), nfs = await import("@remix-run/node-fetch-server");
|
|
1329
|
+
if ('function' != typeof rr.createRequestHandler) throw Error('[rsbuild-plugin-react-router] Missing `createRequestHandler` export from `react-router`');
|
|
1330
|
+
if ('function' != typeof nfs.createRequestListener) throw Error('[rsbuild-plugin-react-router] Missing `createRequestListener` export from `@remix-run/node-fetch-server`');
|
|
1331
|
+
let normalizedBuild = normalizeBuildModule(bundle), build = await resolveBuildExports(normalizedBuild), requestHandler = rr.createRequestHandler(build, 'development'), listener = nfs.createRequestListener((request)=>requestHandler(request));
|
|
1333
1332
|
await listener(req, res);
|
|
1334
1333
|
} catch (error) {
|
|
1335
1334
|
console.error('SSR Error:', error), next(error);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rsbuild-plugin-react-router",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "React Router plugin for Rsbuild",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
"@babel/traverse": "^7.28.6",
|
|
55
55
|
"@babel/types": "^7.28.6",
|
|
56
56
|
"@react-router/node": "^7.13.0",
|
|
57
|
+
"@remix-run/node-fetch-server": "^0.13.0",
|
|
57
58
|
"@rspack/plugin-react-refresh": "^1.6.0",
|
|
58
59
|
"babel-dead-code-elimination": "^1.0.12",
|
|
59
60
|
"esbuild": "^0.27.2",
|
|
@@ -72,6 +73,8 @@
|
|
|
72
73
|
"@rsbuild/core": "1.7.2",
|
|
73
74
|
"@rslib/core": "^0.19.3",
|
|
74
75
|
"@rspack/core": "1.7.4",
|
|
76
|
+
"@rstest/core": "^0.8.1",
|
|
77
|
+
"@rstest/coverage-istanbul": "^0.2.0",
|
|
75
78
|
"@types/babel__core": "^7.20.5",
|
|
76
79
|
"@types/babel__generator": "^7.27.0",
|
|
77
80
|
"@types/babel__traverse": "^7.28.0",
|
|
@@ -79,8 +82,6 @@
|
|
|
79
82
|
"@types/jsesc": "^3.0.3",
|
|
80
83
|
"@types/node": "^25.0.10",
|
|
81
84
|
"@types/react": "^19.2.10",
|
|
82
|
-
"@rstest/core": "^0.8.1",
|
|
83
|
-
"@rstest/coverage-istanbul": "^0.2.0",
|
|
84
85
|
"@types/react-dom": "^19.2.3",
|
|
85
86
|
"es-module-lexer": "1.7.0",
|
|
86
87
|
"kill-port": "^2.0.1",
|