@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 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((userConfig, param)=>{
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' === userConfig.mode;
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: isDev && userConfig.dev.hmr && 'web' === userConfig.output.target,
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, userConfig);
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 { enableProfiler = false, ...options } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
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, options);
243
- if (enableProfiler) applyReactProfiler(api);
251
+ applyBasicReactSupport(api, finalOptions);
252
+ if (finalOptions.enableProfiler) applyReactProfiler(api);
244
253
  }
245
- applySplitChunksRule(api, null == options ? void 0 : options.splitChunks);
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: ({ enableProfiler, ...options }?: PluginReactOptions) => RsbuildPlugin;
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((userConfig, param)=>{
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' === userConfig.mode;
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: isDev && userConfig.dev.hmr && 'web' === userConfig.output.target,
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, userConfig);
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 { enableProfiler = false, ...options } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
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, options);
126
- if (enableProfiler) applyReactProfiler(api);
134
+ applyBasicReactSupport(api, finalOptions);
135
+ if (finalOptions.enableProfiler) applyReactProfiler(api);
127
136
  }
128
- applySplitChunksRule(api, null == options ? void 0 : options.splitChunks);
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.4",
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.14",
31
+ "@rsbuild/core": "1.0.15",
32
32
  "@scripts/test-helper": "1.0.1"
33
33
  },
34
34
  "peerDependencies": {