Skip to content

Commit 23779e4

Browse files
authored
refactor: reactRefreshLoader (#863)
* chore: rename to reactRefreshLoader * chore: make loader cacheable * docs: add loader docs
1 parent 3cebacd commit 23779e4

File tree

5 files changed

+28
-7
lines changed

5 files changed

+28
-7
lines changed

packages/repack/src/loaders/reactRefreshCompatLoader/index.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import reactRefreshLoader, { raw } from './reactRefreshLoader.js';
2+
3+
export { raw };
4+
export default reactRefreshLoader;

packages/repack/src/loaders/reactRefreshCompatLoader/reactRefreshCompatLoader.ts renamed to packages/repack/src/loaders/reactRefreshLoader/reactRefreshLoader.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,13 @@ export const raw = false;
2424
*
2525
* Reference implementation: https://github.com/web-infra-dev/rspack/blob/main/crates/rspack_loader_react_refresh/src/lib.rs
2626
*/
27-
export default function reactRefreshCompatLoader(
27+
export default function reactRefreshLoader(
2828
this: LoaderContext,
2929
originalSource: string,
3030
sourceMap: any,
3131
meta: any
3232
) {
33+
this.cacheable();
3334
const callback = this.async();
3435

3536
const source = `${originalSource}\n\n${reactRefreshFooter}`;

packages/repack/src/plugins/DevelopmentPlugin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export class DevelopmentPlugin implements RspackPluginInstance {
7070
fallback: {
7171
...compiler.options.resolveLoader?.fallback,
7272
'builtin:react-refresh-loader': require.resolve(
73-
'../loaders/reactRefreshCompatLoader'
73+
'../loaders/reactRefreshLoader'
7474
),
7575
},
7676
};
Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,21 @@
1-
# ReactRefreshCompatLoader
1+
# ReactRefreshLoader
2+
3+
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`.
4+
5+
## Example
6+
7+
```js title=webpack.config.cjs
8+
module.exports = {
9+
module: {
10+
rules: [
11+
{
12+
test: /\.[jt]sx?$/,
13+
exclude: /node_modules/,
14+
use: {
15+
loader: "@callstack/repack/react-refresh-loader",
16+
},
17+
},
18+
],
19+
},
20+
};
21+
```

0 commit comments

Comments
 (0)