diff --git a/packages/repack/src/loaders/reactRefreshCompatLoader/index.ts b/packages/repack/src/loaders/reactRefreshCompatLoader/index.ts deleted file mode 100644 index ba8484d53..000000000 --- a/packages/repack/src/loaders/reactRefreshCompatLoader/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import reactRefreshCompatLoader, { raw } from './reactRefreshCompatLoader.js'; - -export { raw }; -export default reactRefreshCompatLoader; diff --git a/packages/repack/src/loaders/reactRefreshLoader/index.ts b/packages/repack/src/loaders/reactRefreshLoader/index.ts new file mode 100644 index 000000000..3e4bd69fe --- /dev/null +++ b/packages/repack/src/loaders/reactRefreshLoader/index.ts @@ -0,0 +1,4 @@ +import reactRefreshLoader, { raw } from './reactRefreshLoader.js'; + +export { raw }; +export default reactRefreshLoader; diff --git a/packages/repack/src/loaders/reactRefreshCompatLoader/reactRefreshCompatLoader.ts b/packages/repack/src/loaders/reactRefreshLoader/reactRefreshLoader.ts similarity index 94% rename from packages/repack/src/loaders/reactRefreshCompatLoader/reactRefreshCompatLoader.ts rename to packages/repack/src/loaders/reactRefreshLoader/reactRefreshLoader.ts index 23df4623b..ac28b7e4f 100644 --- a/packages/repack/src/loaders/reactRefreshCompatLoader/reactRefreshCompatLoader.ts +++ b/packages/repack/src/loaders/reactRefreshLoader/reactRefreshLoader.ts @@ -24,12 +24,13 @@ export const raw = false; * * Reference implementation: https://github.com/web-infra-dev/rspack/blob/main/crates/rspack_loader_react_refresh/src/lib.rs */ -export default function reactRefreshCompatLoader( +export default function reactRefreshLoader( this: LoaderContext, originalSource: string, sourceMap: any, meta: any ) { + this.cacheable(); const callback = this.async(); const source = `${originalSource}\n\n${reactRefreshFooter}`; diff --git a/packages/repack/src/plugins/DevelopmentPlugin.ts b/packages/repack/src/plugins/DevelopmentPlugin.ts index 4330c27c6..5770fe162 100644 --- a/packages/repack/src/plugins/DevelopmentPlugin.ts +++ b/packages/repack/src/plugins/DevelopmentPlugin.ts @@ -70,7 +70,7 @@ export class DevelopmentPlugin implements RspackPluginInstance { fallback: { ...compiler.options.resolveLoader?.fallback, 'builtin:react-refresh-loader': require.resolve( - '../loaders/reactRefreshCompatLoader' + '../loaders/reactRefreshLoader' ), }, }; diff --git a/website/src/5.x/api/loaders/react-refresh-loader.md b/website/src/5.x/api/loaders/react-refresh-loader.md index 661eb00eb..4216eec76 100644 --- a/website/src/5.x/api/loaders/react-refresh-loader.md +++ b/website/src/5.x/api/loaders/react-refresh-loader.md @@ -1 +1,21 @@ -# ReactRefreshCompatLoader +# ReactRefreshLoader + +The `ReactRefreshLoader` is a fallback loader for Webpack that provides React Refresh functionality, mimicking the behavior of Rspack's built-in `builtin:react-refresh-loader`. + +## Example + +```js title=webpack.config.cjs +module.exports = { + module: { + rules: [ + { + test: /\.[jt]sx?$/, + exclude: /node_modules/, + use: { + loader: "@callstack/repack/react-refresh-loader", + }, + }, + ], + }, +}; +```