esbuild-plugin-lit-css
raw JSON →An esbuild plugin that allows importing CSS files as JavaScript tagged template literal objects, primarily for use with LitElement and similar libraries. Version 4.1.1 requires esbuild >=0.16.17 || ^0.25.0 and lit ^2.7.2 || ^3.0.0. It supports CSS preprocessing via a transform function, optional cssnano minification, and an inline mode that embeds CSS directly into JS/TS modules (at a performance cost). The plugin is part of the @pwrs/lit-css ecosystem, with parallel packages for rollup, Vite, webpack, TypeScript, and Parcel. Unlike alternatives that require separate build steps, this integrates directly into esbuild's build pipeline, making it seamless for Lit component development. It ships TypeScript types and is actively maintained with regular updates.
Common errors
error Error: The package "esbuild-plugin-lit-css" exports cannot be required() via CommonJS ↓
error TypeError: litCssPlugin is not a function ↓
error Cannot find module '@pwrs/lit-css' ↓
Warnings
breaking v4.x requires esbuild >=0.16.17, breaking compatibility with older esbuild versions. ↓
breaking v4.x changed the default specifier from 'lit-element' to 'lit', requiring Lit v2.7.2+ or v3.0.0+. ↓
gotcha The 'inline' option incurs a performance penalty because JS/TS files are parsed twice. ↓
deprecated The CommonJS require() pattern (require('esbuild-plugin-lit-css')) is unsupported since v4.x; ESM only. ↓
gotcha If 'cssnano' is enabled, ensure cssnano is installed as a project dependency. ↓
Install
npm install esbuild-plugin-lit-css yarn add esbuild-plugin-lit-css pnpm add esbuild-plugin-lit-css Imports
- litCssPlugin wrong
const litCssPlugin = require('esbuild-plugin-lit-css')correctimport { litCssPlugin } from 'esbuild-plugin-lit-css' - toTaggedTemplateLiteral
import { toTaggedTemplateLiteral } from 'esbuild-plugin-lit-css' - default import wrong
import { default as litCssPlugin } from 'esbuild-plugin-lit-css'correctimport litCssPlugin from 'esbuild-plugin-lit-css'
Quickstart
import esbuild from 'esbuild';
import { litCssPlugin } from 'esbuild-plugin-lit-css';
await esbuild.build({
entryPoints: ['src/main.ts'],
bundle: true,
outfile: 'dist/bundle.js',
plugins: [
litCssPlugin({
filter: /\.css$/i,
inline: false,
cssnano: false,
specifier: 'lit',
tag: 'css',
transform: (data, { filePath }) => data,
}),
],
});
// Then in your Lit component files:
// import style from './my-styles.css'; // style is a CSSResult
// static styles = [style];