npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@animus-ui/unplugin

v0.1.11

Published

Animus transform host for non-plugin bundlers — unplugin-based rollup/esbuild/rspack/webpack entry points over the one extraction session

Readme

@animus-ui/unplugin

Animus transform host for non-plugin bundlers — rollup, esbuild, rspack, and webpack entry points over the one extraction session. Transforms @animus-ui/system builder chains into static CSS at build time, delivers the stylesheet as a real emitted asset (animus.css), and supplies the __ANIMUS_DEV__ define.

Vite users: use @animus-ui/vite-plugin. Next.js users: use @animus-ui/next-plugin. The root export's reachable .vite adapter is unsupported — the supported surface is exactly the four subpath entries below.

Install

npm install --save-dev @animus-ui/unplugin
npm install @animus-ui/system

Requires Node >=22.12.0. Native engine binaries ship for darwin-arm64, linux-x64-gnu, and linux-arm64-gnu.

Setup (rollup)

// rollup.config.mjs — ESM configs use the NAMED export.
import { animusRollup as animus } from '@animus-ui/unplugin/rollup';
import esbuild from 'rollup-plugin-esbuild';

export default {
  input: 'src/entry.tsx',
  plugins: [
    // The host FIRST: its transform must see raw TSX (rollup has no
    // enforce ordering — config order is the law).
    animus({ system: './src/ds.ts', strict: true }),
    esbuild({ jsx: 'automatic', target: 'es2022' }),
  ],
  output: { dir: 'dist', format: 'esm' },
};

The other bundlers follow the same shape from their own subpaths: animusEsbuild from @animus-ui/unplugin/esbuild, animusRspack from @animus-ui/unplugin/rspack, animusWebpack from @animus-ui/unplugin/webpack. In CJS config files use the default export:

// CJS config files:
const animus = require('@animus-ui/unplugin/rollup').default;

A Node-ESM default import of the CJS build binds the exports object, not the plugin function — in ESM configs, always use the named export.

Plugin ordering

The extraction engine parses raw TSX — this host's transform must run before any TS/JSX transpilation. enforce: 'pre' orders webpack and rspack loader chains automatically; rollup consumers must list this plugin before their transpiler in the config. Mis-ordered builds emit a source-drift warning (transform-time source … differs from analyze-time source) followed by a bundler parse error on TSX syntax — move the Animus plugin first to fix it.

What it does

  • Runs the one ExtractionSession at buildStart inside your bundler's process; per-file transforms come from retained engine state. Analysis failure is build failure — never a silent passthrough.
  • Resolves the stylesheet id (.animus/styles.css), the system-props id, and one redirect per admitted design-system kit specifier to the exact entry extraction analyzed. tsconfig paths are the alias source.
  • Emits the extracted stylesheet as a real animus.css asset (for esbuild: written into outdir, or beside outfile).
  • Supplies the __ANIMUS_DEV__ dev-signal define through each bundler's own mechanism.

Options

Options are the shared driver core (system, exclude, strict, mode, targets, minify, …); unknown keys fail loud. mode ('development' | 'production') selects emission only — the minify default, the dev-signal define, engine dev diagnostics — never process lifecycle. When absent, the bundler's own command oracle applies (webpack/ rspack compiler.options.mode, rollup watch mode), else production (esbuild exposes no signal). exclude patterns are glob-aware and MERGE with the defaults (node_modules, dist, .test., .spec., .next, .animus).

The full consumer contract — module-id families, the define contract, artifact set, platform matrix — lives in the standalone extraction contract.

License

MIT