Just a esbuild plugin to simplify the connection of TailwindCSS.
Note
This version (2.x) works with TailwindCSS v4. If you need TailwindCSS v3, use the 1.x version of this plugin.
Package manager | Command |
---|---|
npm | npm i -D esbuild-plugin-tailwindcss |
yarn | yarn add -D esbuild-plugin-tailwindcss |
bun | bun add -d esbuild-plugin-tailwindcss |
This module can be imported as ESM or CJS. The examples below use the ESM syntax.
Add plugin in build config:
import esbuild from "esbuild";
import tailwindPlugin from "esbuild-plugin-tailwindcss";
esbuild.build({
entryPoints: ["src/index.js"],
outdir: "dist",
bundle: true,
plugins: [
tailwindPlugin({
/* options */
}),
],
});
Add the @import "tailwindcss"
import to your main CSS file.
/* index.css */
@import "tailwindcss";
Import index.css
from your main js
, jsx
, ts
, tsx
file:
/* index.js */
import "./index.css";
Done, you can use the TailwindCSS in the project!
Name | Type | Default | Description |
---|---|---|---|
postcssPlugins.prepend |
PostcssPlugin[] |
[] |
Adds custom PostCSS plugins before TailwindCSS processing. |
postcssPlugins.append |
PostcssPlugin[] |
[] |
Adds custom PostCSS plugins after TailwindCSS processing. |
postcssPlugins.disableAutoprefixer |
boolean |
false |
Disable the default Autoprefixer plugin applied after TailwindCSS. |
cssModules.enabled |
boolean |
false |
Enables CSS Modules support. When enabled, class names are locally scoped by default, meaning they are unique to the component and won't conflict with other styles. |
cssModules.filter |
RegExp |
/\.module\.css$/ |
A regular expression to detect which files should be processed as CSS Modules. |
cssModules.exclude |
RegExp[] |
[] |
An array of regular expressions to exclude specific files or paths from CSS Modules processing. |
If the cssModules.enabled
option is true
, you can use css modules with TailwindCSS. For example:
File button.module.css
:
.button {
@apply px-4 py-2 border-2 rounded;
background: #faf;
}
File button.jsx
:
import styles from "./button.module.css";
export const Button = ({ label }) => {
return <button className={styles.button}>{label}</button>;
};
To make css modules work more correctly, add the main CSS file to the excludes:
tailwindPlugin({
cssModules: {
enabled: true,
exclude: ['index.css']
}
}),
To avoid TypeScript errors when importing CSS, add the types to your global declaration file:
/* globals.d.ts */
declare module "*.module.css" {
const classes: Record<string, string>;
export default classes;
}
Since Bun's bundler API is compatible with esbuild, this module can be used as a Bun plugin.
Bun.build({
plugins: [
tailwindPlugin({
/* options */
}),
],
});