Plumeria logoPlumeria

Installation

Installing core

The phantom-runtime distribution size is less than 300B for min + brotli.

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

Setup

The plumerialint command installs @plumeria/eslint-plugin.
oxlint is required to run the plumerialint command.
By running it in parallel with the build, errors are detected with zero runtime.

pnpm i -D oxlint

For Next, we recommend running rimraf to clean up the cache to accommodate the differences between versions:

package.json
  "scripts": {
    "predev": "rimraf .next",
    "prebuild": "rimraf .next",
    "dev": "next dev",
    "build": "plumerialint & next build",
    "start": "next start",
  },
package.json
  "scripts": {
    "dev": "vite",
    "build": "plumerialint & tsc -b && vite build", 
  },

Next.js

Terminal
npm i -D @plumeria/next-plugin @plumeria/postcss-plugin
Terminal
yarn add -D @plumeria/next-plugin @plumeria/postcss-plugin
Terminal
pnpm add -D @plumeria/next-plugin @plumeria/postcss-plugin

postcss.config.js

Reduce build times by narrowing the scope using include and exclude.

postcss.config.js
/* application root */
module.exports = {
  plugins: {
    '@plumeria/postcss-plugin': {
      // use src directory
      include: ['./src/**/*.{ts,tsx}'],
      exclude: ['**/node_modules/**', '**/.next/**'],
    },
  },
};

CSS extraction marke

Inclulde css file @plumeria mark.
Atomic css is aggregated at build time into marked css files.

css
/* app/global.css */ 
/* import in app/layout.tsx */
@plumeria;
...

Turbopack

next.config.ts
import type { NextConfig } from "next";
import { withPlumeria } from "@plumeria/next-plugin/turbopack";

const nextConfig: NextConfig = {
  /* config options here */
};

export default withPlumeria(nextConfig);

Webpack

next.config.ts
import type { NextConfig } from "next";
import { withPlumeria } from "@plumeria/next-plugin";

const nextConfig: NextConfig = {
   /* turbopack: {} may be required */
};

export default withPlumeria(nextConfig); 
"dev": "next dev --webpack",
"build": "next build --webpack",

Vite

Terminal
npm i -D @plumeria/vite-plugin
Terminal
yarn add -D @plumeria/vite-plugin
Terminal
pnpm add -D @plumeria/vite-plugin

Place it before any other plugins.
That's all the settings.

vite.config

vite.config.ts
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react-swc';
import { plumeria } from '@plumeria/vite-plugin';

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

On this page