sinwan-compiler
v0.4.0
Published
Shared compiler core for Sinwan plugins
Maintainers
Readme
sinwan-compiler
Shared compiler for Sinwan. App code usually never imports this package: bun-plugin-sinwan and vite-plugin-sinwan call it for you.
Use this package directly when you write a plugin, run a production analysis pass, or want to understand what the compiler changes in your JSX.
What it does
- Transforms JSX so reactive reads become lazy getters the runtime can track.
- Hoists static markup into reusable templates (including
refslots). - Wraps exported function components with
cc()when they look like components. - Analyzes the project so static props stay static and only truly reactive props pay for an effect.
Install
bun add -d sinwan-compilerApp templates already depend on the Bun or Vite plugin. You only need this package if you call the compiler yourself.
The plugins declare sinwan-compiler as >=0.2.5 <1.0.0. After you publish a new 0.x compiler, do not bump the plugins. Apps pick it up with a fresh install or bun update sinwan-compiler. Republish a plugin only if its own API changed.
Production analysis
bunx sinwan-compiler analyze ./src ./.sinwan/reactive-props.jsonThen point the plugin at that file:
sinwan({ analyze: "./.sinwan/reactive-props.json" });In development the plugins keep an incremental AnalyzerCache instead. You do not need to run the CLI for bun run dev / vite.
Documentation
| Guide | Topic |
| ----- | ----- |
| Overview | How the pieces fit together |
| Transform | Wrapping rules, auto-cc, template hoisting |
| Analyzer | Cross-file reactive props, workspaces, cache |
| CLI | analyze command |
| Plugins | Bun and Vite options |
| API | Public TypeScript API |
| Architecture | Internals for contributors |
License
MIT
