mcpField
L
Lightning CSS

Lightning CSS

github.com/laurigatesDevelopment5936 installsUpdated 1d ago
Repository

About Lightning CSS

Lightning CSS is a Rust-based CSS parser, transformer, bundler, and minifier for developers configuring CSS build pipelines. It combines syntax lowering, vendor prefix handling, and CSS Modules support for Vite or standalone CLI workflows.

Key features

  1. 01Parse, transform, and minify CSS
  2. 02Lower syntax for browser targets
  3. 03Add or remove vendor prefixes
  4. 04Bundle CSS `@import` rules
  5. 05Built-in CSS Modules support

Use cases

  1. 01Configure CSS processing in Vite
  2. 02Replace a PostCSS and autoprefixer pipeline
  3. 03Transform modern CSS for target browsers
  4. 04Bundle and minify production stylesheets

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/laurigates/claude-plugins --skill lightning-css

After installing, type/lightning-cssin Claude Code to confirm it loaded.

Details

From the project README

Lightning CSS

Lightning CSS is an extremely fast CSS parser, transformer, bundler, and minifier written in Rust. It replaces PostCSS + autoprefixer + postcss-preset-env in a single tool.

When to Use This Skill

Use this skill when...Use something else when...
Configuring CSS processing in ViteGenerating utility classes (use UnoCSS)
Replacing PostCSS/autoprefixer pipelineLinting CSS rules (use Stylelint)
Setting up browser target transpilationWriting CSS-in-JS (use framework tooling)
Enabling CSS modulesFormatting CSS code (use Biome/Prettier)
Minifying CSS for productionNeed PostCSS plugins with no Lightning CSS equivalent
Bundling CSS @import chains

Core Expertise

  • Rust-native: 100x+ faster than PostCSS for transforms
  • All-in-one: Replaces autoprefixer, postcss-preset-env, postcss-import, cssnano
  • Syntax lowering: Modern CSS to browser-compatible CSS based on targets
  • Vendor prefixing: Automatic addition and removal based on targets
  • CSS modules: Built-in scoped class names
  • Minification: Smaller output than esbuild's CSS minifier
  • Bundling: Inlines @import rules with dependency resolution

Installation

# As Vite dependency (most common)
npm add -D lightningcss browserslist

# Standalone CLI
npm add -g lightningcss-cli

# Bun
bun add -d lightningcss browserslist

Vite Integration

Basic Setup
// vite.config.ts
import { defineConfig } from 'vite'
import browserslist from 'browserslist'
import { browserslistToTargets } from 'lightningcss'

export default defineConfig({
  css: {
    transformer: 'lightningcss',
    lightningcss: {
      targets: browserslistToTargets(browserslist('>= 0.25%'))
    }
  },
  build: {
    cssMinify: 'lightningcss'
  }
})
With UnoCSS (Recommended Combo)
// vite.config.ts
import UnoCSS from 'unocss/vite'
import browserslist from 'browserslist'
import { browserslistToTargets } from 'lightningcss'

export default defineConfig({
  plugins: [UnoCSS()],
  css: {
    transformer: 'lightningcss',
    lightningcss: {
      targets: browserslistToTargets(browserslist('>= 0.25%'))
    }
  },
  build: {
    cssMinify: 'lightningcss'
  }
})
CSS Modules via Vite
// vite.config.ts - use css.lightningcss.cssModules (NOT css.modules)
export default defineConfig({
  css: {
    transformer: 'lightningcss',
    lightningcss: {
      cssModules: {
        pattern: '[hash]_[local]'
      }
    }
  }
})
Draft Syntax Features
// Enable experimental CSS features
export default defineConfig({
  css: {
    transformer: 'lightningcss',
    lightningcss: {
      drafts: {
        customMedia: true
      }
    }
  }
})

CLI Usage

# Transform and minify
lightningcss --minify --bundle --targets '>= 0.25%' input.css -o output.css

# With source maps
lightningcss --minify --bundle --sourcemap input.css -o output.css

# Error recovery (skip invalid rules)
lightningcss --error-recovery input.css -o output.css

Transformation Features

Lightning CSS automatically transpiles based on browser targets:

FeatureModern CSSTranspiled Output
Nesting.parent { .child { } }.parent .child { }
Color functionsoklch(0.7 0.15 180)rgb(...) fallback
color-mix()color-mix(in srgb, red, blue)Computed color value
light-dark()light-dark(white, black)Media query fallbacks
Logical propertiesmargin-inlinemargin-left/margin-right
Media range syntax(480px <= width <= 768px)(min-width: 480px) and (max-width: 768px)
Vendor prefixesuser-select: none-webkit-user-select: none + unprefixed
Math functionsclamp(), round()Static values where possible
Custom media@custom-media --mobile (max-width: 768px)Inlined media queries
:is() / :not()Complex selectorsExpanded fallbacks
system-ui fontfont-family: system-uiCross-platform font stack

CSS Modules

Lightning CSS provides built-in CSS modules support:

/* styles.module.css */
.container {
  composes: base from './base.module.css';
  padding: 1rem;
}

.title {
  color: var(--heading-color);
}
// Component usage
import styles from './styles.module.css'
element.className = styles.container

Replacing PostCSS Pipeline

PostCSS PluginLightning CSS Equivalent
autoprefixerBuilt-in (via targets)
postcss-preset-envBuilt-in (syntax lowering)
postcss-import--bundle flag
postcss-nestingBuilt-in (via targets)
postcss-custom-mediadrafts.customMedia: true
cssnano--minify flag
postcss-modulescssModules: true
Migration Steps
  1. Remove PostCSS dependencies and postcss.config.js
  2. Add lightningcss and browserslist as dev dependencies
  3. Set css.transformer: 'lightningcss' in Vite config
  4. Set build.cssMinify: 'lightningcss'
  5. Configure targets via browserslist (.browserslistrc or package.json)
  6. Move CSS modules config from css.modules to css.lightningcss.cssModules

Browser Targets

# .browserslistrc
>= 0.25%
not dead
not op_mini all
// package.json alternative
{
  "browserslist": [">= 0.25%", "not dead"]
}

Agentic Optimizations

ContextCommand
Quick minifylightningcss --minify input.css -o output.css
Bundle + minifylightningcss --minify --bundle input.css -o output.css
With targetslightningcss --minify --targets '>= 0.25%' input.css -o output.css
Error recoverylightningcss --error-recovery input.css -o output.css
Check Vite configRead vite.config.ts for css.transformer and css.lightningcss
Check browserslistRead .browserslistrc or browserslist in package.json

Quick Reference

FlagDescription
--minifyMinify output CSS
--bundleInline @import rules
--targetsBrowser targets (browserslist query)
--sourcemapGenerate source maps
--error-recoverySkip invalid rules instead of erroring
-o <file>Output file path

References

Comments

Markdown supported