Vite

examples/vite-react shows how to use @plumeria/unplugin in Vite.
It compiles styles into CSS via AST parsing, with HMR support.

Installation

Terminal
npm i -D @plumeria/unplugin
Terminal
yarn add -D @plumeria/unplugin
Terminal
pnpm i -D @plumeria/unplugin

Usage

vite.config.ts
import { defineConfig } from 'vite';
import plumeria from '@plumeria/unplugin';

export default defineConfig({
  plugins: [plumeria.vite()],
});

plumeria.vite() accepts an options object:

vite.config.ts
export default defineConfig({
  plugins: [
    plumeria.vite({
      include: ['./src/**/*.{ts,tsx}'],
      exclude: ['**/node_modules/**'],
      styleProp: 'sx',
    }),
  ],
});
  • include — The path to the file to be converted.
  • exclude — The path to the file to be excluded from conversion.
  • styleProp — The JSX prop that carries styles. The default is 'classStyle'.

plumeria.d.ts

@plumeria/core ships no prop declaration of its own, so name the styling prop your project compiles with.

For the default name (classStyle), reference the declaration that ships with the package:

plumeria.d.ts
/// <reference types="@plumeria/core/class-style" />

If you set a custom styleProp (such as 'sx'), declare the same name for TypeScript instead:

plumeria.d.ts
import type { Style } from '@plumeria/core';

declare global {
  namespace React {
    interface HTMLAttributes<T> {
      sx?: Style;
    }
    interface SVGAttributes<T> {
      sx?: Style;
    }
  }
}

The styleProp in next.config.ts and the property name in plumeria.d.ts must match. If they disagree, the prop type-checks but is never compiled away.

On this page