npm.io
0.2.2 • Published yesterdayCLI

vite-plugin-sinwan

Licence
MIT
Version
0.2.2
Deps
2
Size
52 kB
Vulns
0
Weekly
0

vite-plugin-sinwan

Vite plugin for Sinwan — JSX transformation with template hoisting, reactive expression wrapping, and plugin-free Fast Refresh powered by sinwan-compiler.

Install

bun add -d vite-plugin-sinwan

Usage

// vite.config.ts
import { defineConfig } from "vite";
import { sinwan } from "vite-plugin-sinwan";

export default defineConfig({
  plugins: [sinwan()],
});

Options

sinwan({
  // Enable template hoisting (default: true)
  hoist: true,
  // Emit explicit binding descriptors (default: false)
  explicitBindings: false,
  // Path to reactive-props metadata from `sinwan analyze`
  analyze: "./.sinwan/props.json",
  // Incremental cross-file analysis for dev/HMR
  cache: {
    root: process.cwd(),
    tsConfigPath: "./tsconfig.json",
    cachePath: "./.sinwan/cache.json",
    bunfigPath: "./bunfig.toml",
  },
  // Plugin-free Fast Refresh (default: true, dev server only)
  fastRefresh: true,
});
Option Type Default Description
hoist boolean true Hoist static DOM to module-level templates
explicitBindings boolean false Emit compiler-driven binding descriptors
analyze string undefined Path to reactive-props metadata from sinwan analyze
cache boolean | SinwanCacheOptions false Enable incremental in-memory cross-file analysis
fastRefresh boolean true Inject per-component HMR boundaries (dev server only)

How it works

  • Runs with enforce: "pre" so it executes before any other transform
  • Static DOM elements are hoisted to module-level template objects
  • Dynamic expressions are wrapped in zero-arity functions for fine-grained reactivity
  • Component calls (capitalised tags) are left for the runtime
  • Fast Refresh injects per-component HMR boundaries in vite serve — no extra plugin needed

License

MIT Mohammed Ben Cheikh

Keywords