@rsbuild/plugin-react 1.0.4 → 1.0.5
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/dist/index.cjs +19 -10
- package/dist/index.d.ts +6 -1
- package/dist/index.js +19 -10
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -119,13 +119,14 @@ const react_require = (0, external_node_module_namespaceObject.createRequire)(/*
|
|
|
119
119
|
return 'undefined' == typeof document ? new (module.require('url'.replace('', ''))).URL('file:' + __filename).href : document.currentScript && document.currentScript.src || new URL('main.js', document.baseURI).href;
|
|
120
120
|
}());
|
|
121
121
|
const applyBasicReactSupport = (api, options)=>{
|
|
122
|
-
const REACT_REFRESH_PATH = react_require.resolve('react-refresh');
|
|
123
|
-
api.modifyEnvironmentConfig((
|
|
122
|
+
const REACT_REFRESH_PATH = options.fastRefresh ? react_require.resolve('react-refresh') : '';
|
|
123
|
+
api.modifyEnvironmentConfig((config, param)=>{
|
|
124
124
|
let { mergeEnvironmentConfig } = param;
|
|
125
|
-
const isDev = 'development' ===
|
|
125
|
+
const isDev = 'development' === config.mode;
|
|
126
|
+
const usingHMR = isDev && config.dev.hmr && 'web' === config.output.target;
|
|
126
127
|
const reactOptions = {
|
|
127
128
|
development: isDev,
|
|
128
|
-
refresh:
|
|
129
|
+
refresh: usingHMR && options.fastRefresh,
|
|
129
130
|
runtime: 'automatic',
|
|
130
131
|
...options.swcReactOptions
|
|
131
132
|
};
|
|
@@ -145,13 +146,13 @@ const applyBasicReactSupport = (api, options)=>{
|
|
|
145
146
|
}
|
|
146
147
|
}
|
|
147
148
|
};
|
|
148
|
-
return mergeEnvironmentConfig(extraConfig,
|
|
149
|
+
return mergeEnvironmentConfig(extraConfig, config);
|
|
149
150
|
});
|
|
150
151
|
api.modifyBundlerChain(async (chain, param)=>{
|
|
151
152
|
let { CHAIN_ID, environment, isDev, target } = param;
|
|
152
153
|
const { config } = environment;
|
|
153
154
|
const usingHMR = isDev && config.dev.hmr && 'web' === target;
|
|
154
|
-
if (!usingHMR) return;
|
|
155
|
+
if (!usingHMR || !options.fastRefresh) return;
|
|
155
156
|
chain.resolve.alias.set('react-refresh', external_node_path_default().dirname(REACT_REFRESH_PATH));
|
|
156
157
|
const { default: ReactRefreshRspackPlugin } = await Promise.resolve().then(__webpack_require__.t.bind(__webpack_require__, "@rspack/plugin-react-refresh", 23));
|
|
157
158
|
const SCRIPT_REGEX = /\.(?:js|jsx|mjs|cjs|ts|tsx|mts|cts)$/;
|
|
@@ -234,15 +235,23 @@ const applySplitChunksRule = function(api) {
|
|
|
234
235
|
};
|
|
235
236
|
const PLUGIN_REACT_NAME = 'rsbuild:react';
|
|
236
237
|
const pluginReact = function() {
|
|
237
|
-
let
|
|
238
|
+
let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
|
|
238
239
|
return {
|
|
239
240
|
name: PLUGIN_REACT_NAME,
|
|
240
241
|
setup (api) {
|
|
242
|
+
const defaultOptions = {
|
|
243
|
+
fastRefresh: true,
|
|
244
|
+
enableProfiler: false
|
|
245
|
+
};
|
|
246
|
+
const finalOptions = {
|
|
247
|
+
...defaultOptions,
|
|
248
|
+
...options
|
|
249
|
+
};
|
|
241
250
|
if ('rspack' === api.context.bundlerType) {
|
|
242
|
-
applyBasicReactSupport(api,
|
|
243
|
-
if (enableProfiler) applyReactProfiler(api);
|
|
251
|
+
applyBasicReactSupport(api, finalOptions);
|
|
252
|
+
if (finalOptions.enableProfiler) applyReactProfiler(api);
|
|
244
253
|
}
|
|
245
|
-
applySplitChunksRule(api, null ==
|
|
254
|
+
applySplitChunksRule(api, null == finalOptions ? void 0 : finalOptions.splitChunks);
|
|
246
255
|
}
|
|
247
256
|
};
|
|
248
257
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -34,6 +34,11 @@ export type PluginReactOptions = {
|
|
|
34
34
|
* @see https://rspack.dev/guide/tech/react#rspackplugin-react-refresh
|
|
35
35
|
*/
|
|
36
36
|
reactRefreshOptions?: ReactRefreshOptions;
|
|
37
|
+
/**
|
|
38
|
+
* Whether to enable React Fast Refresh in development mode.
|
|
39
|
+
* @default true
|
|
40
|
+
*/
|
|
41
|
+
fastRefresh?: boolean;
|
|
37
42
|
};
|
|
38
43
|
export declare const PLUGIN_REACT_NAME = "rsbuild:react";
|
|
39
|
-
export declare const pluginReact: (
|
|
44
|
+
export declare const pluginReact: (options?: PluginReactOptions) => RsbuildPlugin;
|
package/dist/index.js
CHANGED
|
@@ -2,13 +2,14 @@ import * as __WEBPACK_EXTERNAL_MODULE_node_module__ from "node:module";
|
|
|
2
2
|
import * as __WEBPACK_EXTERNAL_MODULE_node_path__ from "node:path";
|
|
3
3
|
const react_require = (0, __WEBPACK_EXTERNAL_MODULE_node_module__.createRequire)(import.meta.url);
|
|
4
4
|
const applyBasicReactSupport = (api, options)=>{
|
|
5
|
-
const REACT_REFRESH_PATH = react_require.resolve('react-refresh');
|
|
6
|
-
api.modifyEnvironmentConfig((
|
|
5
|
+
const REACT_REFRESH_PATH = options.fastRefresh ? react_require.resolve('react-refresh') : '';
|
|
6
|
+
api.modifyEnvironmentConfig((config, param)=>{
|
|
7
7
|
let { mergeEnvironmentConfig } = param;
|
|
8
|
-
const isDev = 'development' ===
|
|
8
|
+
const isDev = 'development' === config.mode;
|
|
9
|
+
const usingHMR = isDev && config.dev.hmr && 'web' === config.output.target;
|
|
9
10
|
const reactOptions = {
|
|
10
11
|
development: isDev,
|
|
11
|
-
refresh:
|
|
12
|
+
refresh: usingHMR && options.fastRefresh,
|
|
12
13
|
runtime: 'automatic',
|
|
13
14
|
...options.swcReactOptions
|
|
14
15
|
};
|
|
@@ -28,13 +29,13 @@ const applyBasicReactSupport = (api, options)=>{
|
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
};
|
|
31
|
-
return mergeEnvironmentConfig(extraConfig,
|
|
32
|
+
return mergeEnvironmentConfig(extraConfig, config);
|
|
32
33
|
});
|
|
33
34
|
api.modifyBundlerChain(async (chain, param)=>{
|
|
34
35
|
let { CHAIN_ID, environment, isDev, target } = param;
|
|
35
36
|
const { config } = environment;
|
|
36
37
|
const usingHMR = isDev && config.dev.hmr && 'web' === target;
|
|
37
|
-
if (!usingHMR) return;
|
|
38
|
+
if (!usingHMR || !options.fastRefresh) return;
|
|
38
39
|
chain.resolve.alias.set('react-refresh', __WEBPACK_EXTERNAL_MODULE_node_path__["default"].dirname(REACT_REFRESH_PATH));
|
|
39
40
|
const { default: ReactRefreshRspackPlugin } = await import("@rspack/plugin-react-refresh");
|
|
40
41
|
const SCRIPT_REGEX = /\.(?:js|jsx|mjs|cjs|ts|tsx|mts|cts)$/;
|
|
@@ -117,15 +118,23 @@ const applySplitChunksRule = function(api) {
|
|
|
117
118
|
};
|
|
118
119
|
const PLUGIN_REACT_NAME = 'rsbuild:react';
|
|
119
120
|
const pluginReact = function() {
|
|
120
|
-
let
|
|
121
|
+
let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
|
|
121
122
|
return {
|
|
122
123
|
name: PLUGIN_REACT_NAME,
|
|
123
124
|
setup (api) {
|
|
125
|
+
const defaultOptions = {
|
|
126
|
+
fastRefresh: true,
|
|
127
|
+
enableProfiler: false
|
|
128
|
+
};
|
|
129
|
+
const finalOptions = {
|
|
130
|
+
...defaultOptions,
|
|
131
|
+
...options
|
|
132
|
+
};
|
|
124
133
|
if ('rspack' === api.context.bundlerType) {
|
|
125
|
-
applyBasicReactSupport(api,
|
|
126
|
-
if (enableProfiler) applyReactProfiler(api);
|
|
134
|
+
applyBasicReactSupport(api, finalOptions);
|
|
135
|
+
if (finalOptions.enableProfiler) applyReactProfiler(api);
|
|
127
136
|
}
|
|
128
|
-
applySplitChunksRule(api, null ==
|
|
137
|
+
applySplitChunksRule(api, null == finalOptions ? void 0 : finalOptions.splitChunks);
|
|
129
138
|
}
|
|
130
139
|
};
|
|
131
140
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsbuild/plugin-react",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "React plugin for Rsbuild",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/node": "18.x",
|
|
30
30
|
"typescript": "^5.6.3",
|
|
31
|
-
"@rsbuild/core": "1.0.
|
|
31
|
+
"@rsbuild/core": "1.0.15",
|
|
32
32
|
"@scripts/test-helper": "1.0.1"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|