@@ -0,0 +1,42 @@
|
||||
# `@effect-view/vite`
|
||||
|
||||
Experimental Vite Fast Refresh support for Effect View components.
|
||||
|
||||
```ts
|
||||
import effectViewRefresh from "@effect-view/vite"
|
||||
import react from "@vitejs/plugin-react"
|
||||
import { defineConfig } from "vite"
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
effectViewRefresh(),
|
||||
react(),
|
||||
],
|
||||
})
|
||||
```
|
||||
|
||||
The plugin recognizes `Component.make` and `Component.makeUntraced`
|
||||
definitions imported from `effect-fc-next`. The legacy `effect-fc` package is
|
||||
not supported. `effect-fc-next` owns the bundler-neutral refresh cell protocol;
|
||||
this package is the Vite adapter that retains those cells in HMR data. The
|
||||
plugin assigns stable development IDs and self-accepts successfully
|
||||
instrumented modules.
|
||||
|
||||
The adapter-facing protocol is exported from `effect-fc-next/Refreshable`.
|
||||
|
||||
Renaming or removing an instrumented View invalidates the module upward instead
|
||||
of leaving a stale mounted descriptor.
|
||||
|
||||
React state is retained when the ordered hook signature is unchanged. Adding,
|
||||
removing, or changing a hook call resets the Effect View implementation. Add
|
||||
`// @refresh reset` to a module to reset its Views on every update.
|
||||
|
||||
## Current limitations
|
||||
|
||||
- Vite is the only supported bundler.
|
||||
- Definitions must be top-level variable, class, or default-export
|
||||
declarations.
|
||||
- Hook signature analysis is conservative and based on `useX` call syntax.
|
||||
- Changing a descriptor's trait pipeline during a refresh is not guaranteed to
|
||||
preserve state.
|
||||
- Source maps for the injected transform are not generated yet.
|
||||
Reference in New Issue
Block a user