Open-Source Wikis

/

Tailwind CSS

/

Packages

tailwindlabs/tailwindcss

Packages

The pnpm workspace at pnpm-workspace.yaml includes everything under packages/*, plus crates/node and crates/node/npm/* (which are the Rust-derived npm packages). Nine of those packages publish to npm; one (internal-example-plugin) is private and used only as a test fixture.

Package Purpose Page
tailwindcss The CSS compiler. The thing everyone imports. tailwindcss
@tailwindcss/cli tailwindcss command-line build tool. cli
@tailwindcss/standalone Single-binary CLI built with Bun. cli
@tailwindcss/vite Vite plugin. vite
@tailwindcss/postcss PostCSS plugin. postcss
@tailwindcss/webpack Webpack loader. webpack
@tailwindcss/node Node-only helpers shared between CLI/Vite/PostCSS/Webpack. node
@tailwindcss/browser Drop-in browser bundle that watches the DOM. browser
@tailwindcss/upgrade v3 → v4 migration tool (npx @tailwindcss/upgrade). upgrade
internal-example-plugin Private test fixture for the v3 plugin loader. (n/a)

Dependency shape

Every adapter package (CLI, Vite, PostCSS, Webpack) depends on three things:

graph LR
    Adapter["Adapter package<br/>(cli/vite/postcss/webpack)"]
    Compiler["tailwindcss<br/>(workspace:*)"]
    NodeHelpers["@tailwindcss/node<br/>(workspace:*)"]
    Scanner["@tailwindcss/oxide<br/>(workspace:*)"]
    Adapter --> Compiler
    Adapter --> NodeHelpers
    Adapter --> Scanner

The browser bundle is the exception — it depends only on tailwindcss (the compiler ships with no runtime deps so it bundles cleanly into the browser).

The standalone package depends on @tailwindcss/cli plus the official forms/typography/aspect-ratio plugins it ships pre-bundled.

@tailwindcss/upgrade is independent: it depends directly on @tailwindcss/node, @tailwindcss/oxide, and on tailwindcss to read its built-in utility list when canonicalizing class names.

Versioning

All workspace packages release together. As of the wiki snapshot, every published package is at 4.2.4. Releases are orchestrated by .github/workflows/prepare-release.yml plus .github/workflows/release.yml.

The version numbers are kept in sync via scripts/version-packages.mjs. There is no runtime check that they match — but the integration tests catch any drift.

How adapters are tested

Each adapter has unit tests inside its package and at least one integration suite under integrations/. The integration suites install the actual packed tarballs into a temporary project and run real builds, which is the most reliable way to catch ecosystem regressions.

Package Unit tests Integration suite
tailwindcss packages/tailwindcss/src/**/*.test.ts (drives all adapters)
@tailwindcss/cli (no separate unit tests; covered via CLI) integrations/cli/
@tailwindcss/postcss packages/@tailwindcss-postcss/src/index.test.ts integrations/postcss/
@tailwindcss/vite (mostly integration-tested) integrations/vite/
@tailwindcss/webpack (mostly integration-tested) integrations/webpack/
@tailwindcss/upgrade packages/@tailwindcss-upgrade/src/**/*.test.ts integrations/upgrade/
@tailwindcss/browser packages/@tailwindcss-browser/tests/ (Playwright UI, see testing)

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Packages – Tailwind CSS wiki | Factory