Preact refresh plugin for Rspack.
First you need to install the dependencies:
npm add @rspack/plugin-preact-refresh @prefresh/core @prefresh/utils -D # or yarn add @rspack/plugin-preact-refresh @prefresh/core @prefresh/utils -D # or pnpm add @rspack/plugin-preact-refresh @prefresh/core @prefresh/utils -D # or bun add @rspack/plugin-preact-refresh @prefresh/core @prefresh/utils -D
The enabling of the Preact Refresh is divided into two parts: code injection and code transformation
@prefresh/core
and @prefresh/utils
, this is what this plugin does.builtin:swc-loader
or swc-loader
jsc.transform.react.refresh
to support common react transformation@swc/plugin-prefresh
into jsc.experimental.plugins
to support the specific transformation of preactbabel-loader
and add official babel plugin of prefresh.In versions below 1.0.0, Rspack did not support preact refresh with
swc-loader
.
const PreactRefreshPlugin = require("@rspack/plugin-preact-refresh"); const isDev = process.env.NODE_ENV === "development"; module.exports = { // ... mode: isDev ? "development" : "production", module: { rules: [ { test: /\.jsx$/, // exclude node_modules to avoid dependencies transformed by `@swc/plugin-prefresh` exclude: /node_modules/, use: { loader: "builtin:swc-loader", options: { jsc: { experimental: { plugins: [ [ // enable prefresh specific transformation require.resolve("@swc/plugin-prefresh"), { library: ["preact-like-framework"], // the customizable preact name, default is `["preact", "preact/compat", "react"]` }, ], ], }, parser: { syntax: "ecmascript", jsx: true, }, transform: { react: { development: isDev, refresh: isDev, // enable common react transformation }, }, }, }, }, }, ], }, plugins: [isDev && new PreactRefreshPlugin()].filter(Boolean), };
/\.([jt]sx?)$/
Include files to be processed by the plugin. The value is the same as the rule.test
option in Rspack.
new PreactRefreshPlugin({ include: [/\.jsx$/, /\.tsx$/], });
/node_modules/
Exclude files from being processed by the plugin. The value is the same as the rule.exclude
option in Rspack.
new PreactRefreshPlugin({ exclude: [/node_modules/, /some-other-module/], });
string
path.dirname(require.resolve('preact/package.json'))
Path to the preact
package.
const path = require("node:path"); new PreactRefreshPlugin({ preactPath: path.dirname(require.resolve("preact/package.json")), });
See examples/preact-refresh for the full example.
Thanks to the prefresh created by @Jovi De Croock, which inspires implement this plugin.
Rspack is MIT licensed.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4