@vitejs/plugin-react-swc 3.9.0-beta.2 → 3.9.0-beta.3

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 CHANGED
@@ -93,6 +93,16 @@ react({
93
93
  })
94
94
  ```
95
95
 
96
+ ### reactRefreshHost
97
+
98
+ The `reactRefreshHost` option is only necessary in a module federation context. It enables HMR to work between a remote & host application. In your remote Vite config, you would add your host origin:
99
+
100
+ ```js
101
+ react({ reactRefreshHost: 'http://localhost:3000' })
102
+ ```
103
+
104
+ Under the hood, this simply updates the React Fash Refresh runtime URL from `/@react-refresh` to `http://localhost:3000/@react-refresh` to ensure there is only one Refresh runtime across the whole application. Note that if you define `base` option in the host application, you need to include it in the option, like: `http://localhost:3000/{base}`.
105
+
96
106
  ### useAtYourOwnRisk_mutateSwcOptions
97
107
 
98
108
  The future of Vite is with OXC, and from the beginning this was a design choice to not exposed too many specialties from SWC so that Vite React users can move to another transformer later.
package/index.cjs CHANGED
@@ -17,7 +17,7 @@ window.$RefreshReg$ = () => {};
17
17
  window.$RefreshSig$ = () => (type) => type;`;
18
18
  var getPreambleCode = (base) => preambleCode.replace("__BASE__", base);
19
19
  var avoidSourceMapOption = Symbol();
20
- function addRefreshWrapper(code, map, pluginName, id) {
20
+ function addRefreshWrapper(code, map, pluginName, id, reactRefreshHost = "") {
21
21
  const hasRefresh = refreshContentRE.test(code);
22
22
  const onlyReactComp = !hasRefresh && reactCompRE.test(code);
23
23
  const normalizedMap = map === avoidSourceMapOption ? null : map;
@@ -58,7 +58,7 @@ if (import.meta.hot && !inWebWorker) {
58
58
  }
59
59
  }
60
60
  const sharedHead = removeLineBreaksIfNeeded(
61
- `import * as RefreshRuntime from "${runtimePublicPath}";
61
+ `import * as RefreshRuntime from "${reactRefreshHost}${runtimePublicPath}";
62
62
  const inWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;
63
63
 
64
64
  `,
@@ -124,6 +124,7 @@ var react = (_options) => {
124
124
  plugins: (_options == null ? void 0 : _options.plugins) ? _options == null ? void 0 : _options.plugins.map((el) => [resolve(el[0]), el[1]]) : void 0,
125
125
  devTarget: (_options == null ? void 0 : _options.devTarget) ?? "es2020",
126
126
  parserConfig: _options == null ? void 0 : _options.parserConfig,
127
+ reactRefreshHost: _options == null ? void 0 : _options.reactRefreshHost,
127
128
  useAtYourOwnRisk_mutateSwcOptions: _options == null ? void 0 : _options.useAtYourOwnRisk_mutateSwcOptions
128
129
  };
129
130
  return [
@@ -187,7 +188,8 @@ var react = (_options) => {
187
188
  result.code,
188
189
  result.map,
189
190
  "@vitejs/plugin-react-swc",
190
- id
191
+ id,
192
+ options.reactRefreshHost
191
193
  );
192
194
  }
193
195
  },
package/index.d.ts CHANGED
@@ -29,6 +29,14 @@ type Options = {
29
29
  * Exclusion of node_modules should be handled by the function if needed.
30
30
  */
31
31
  parserConfig?: (id: string) => ParserConfig | undefined;
32
+ /**
33
+ * React Fast Refresh runtime URL prefix.
34
+ * Useful in a module federation context to enable HMR by specifying
35
+ * the host application URL in a Vite config of a remote application.
36
+ * @example
37
+ * reactRefreshHost: 'http://localhost:3000'
38
+ */
39
+ reactRefreshHost?: string;
32
40
  /**
33
41
  * The future of Vite is with OXC, and from the beginning this was a design choice
34
42
  * to not exposed too many specialties from SWC so that Vite React users can move to
package/index.mjs CHANGED
@@ -19,7 +19,7 @@ window.$RefreshReg$ = () => {};
19
19
  window.$RefreshSig$ = () => (type) => type;`;
20
20
  var getPreambleCode = (base) => preambleCode.replace("__BASE__", base);
21
21
  var avoidSourceMapOption = Symbol();
22
- function addRefreshWrapper(code, map, pluginName, id) {
22
+ function addRefreshWrapper(code, map, pluginName, id, reactRefreshHost = "") {
23
23
  const hasRefresh = refreshContentRE.test(code);
24
24
  const onlyReactComp = !hasRefresh && reactCompRE.test(code);
25
25
  const normalizedMap = map === avoidSourceMapOption ? null : map;
@@ -60,7 +60,7 @@ if (import.meta.hot && !inWebWorker) {
60
60
  }
61
61
  }
62
62
  const sharedHead = removeLineBreaksIfNeeded(
63
- `import * as RefreshRuntime from "${runtimePublicPath}";
63
+ `import * as RefreshRuntime from "${reactRefreshHost}${runtimePublicPath}";
64
64
  const inWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;
65
65
 
66
66
  `,
@@ -125,6 +125,7 @@ var react = (_options) => {
125
125
  plugins: (_options == null ? void 0 : _options.plugins) ? _options == null ? void 0 : _options.plugins.map((el) => [resolve(el[0]), el[1]]) : void 0,
126
126
  devTarget: (_options == null ? void 0 : _options.devTarget) ?? "es2020",
127
127
  parserConfig: _options == null ? void 0 : _options.parserConfig,
128
+ reactRefreshHost: _options == null ? void 0 : _options.reactRefreshHost,
128
129
  useAtYourOwnRisk_mutateSwcOptions: _options == null ? void 0 : _options.useAtYourOwnRisk_mutateSwcOptions
129
130
  };
130
131
  return [
@@ -188,7 +189,8 @@ var react = (_options) => {
188
189
  result.code,
189
190
  result.map,
190
191
  "@vitejs/plugin-react-swc",
191
- id
192
+ id,
193
+ options.reactRefreshHost
192
194
  );
193
195
  }
194
196
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitejs/plugin-react-swc",
3
- "version": "3.9.0-beta.2",
3
+ "version": "3.9.0-beta.3",
4
4
  "license": "MIT",
5
5
  "author": "Arnaud Barré (https://github.com/ArnaudBarre)",
6
6
  "description": "Speed up your Vite dev server with SWC",
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "homepage": "https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react-swc#readme",
25
25
  "dependencies": {
26
- "@swc/core": "^1.11.11"
26
+ "@swc/core": "^1.11.21"
27
27
  },
28
28
  "peerDependencies": {
29
29
  "vite": "^4 || ^5 || ^6"