mcpField
L
Lightning CSS

Lightning CSS

github.com/laurigates开发5936 次安装1 天前更新
代码仓库

关于 Lightning CSS

Lightning CSS 是用 Rust 编写的 CSS 解析、转换、打包和压缩工具,面向配置 CSS 构建流程的开发者。它内置多种语法转换、浏览器前缀处理和 CSS Modules,可用于 Vite 或独立命令行流程。

主要功能

  1. 01解析、转换与压缩 CSS
  2. 02按浏览器目标降级语法
  3. 03自动处理浏览器前缀
  4. 04打包 CSS `@import`
  5. 05内置 CSS Modules 支持

适用场景

  1. 01在 Vite 中配置 CSS 处理
  2. 02替换 PostCSS 与 autoprefixer 流程
  3. 03按目标浏览器转换现代 CSS
  4. 04打包并压缩生产环境样式

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/lightning-css确认已加载。

详细介绍

Lightning CSS

Lightning CSS 是一款使用 Rust 编写的超高速 CSS 解析器、转换器、打包器和压缩器。它用一个工具取代 PostCSS + autoprefixer + postcss-preset-env。

何时使用此技能

在以下情况下使用此技能……在以下情况下使用其他工具……
在 Vite 中配置 CSS 处理生成实用类(使用 UnoCSS)
替换 PostCSS/autoprefixer 流程检查 CSS 规则(使用 Stylelint)
设置浏览器目标转译编写 CSS-in-JS(使用框架工具)
启用 CSS modules格式化 CSS 代码(使用 Biome/Prettier)
为生产环境压缩 CSS需要没有 Lightning CSS 等效项的 PostCSS 插件
打包 CSS @import 链

核心能力

  • 原生 Rust:转换速度比 PostCSS 快 100 倍以上
  • 一体化:取代 autoprefixer、postcss-preset-env、postcss-import、cssnano
  • 语法降级:根据目标将现代 CSS 转换为浏览器兼容的 CSS
  • 厂商前缀:根据目标自动添加和移除前缀
  • CSS modules:内置作用域类名
  • 压缩:输出比 esbuild 的 CSS 压缩器更小
  • 打包:内联 @import 规则并解析依赖项

安装

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

# Standalone CLI
npm add -g lightningcss-cli

# Bun
bun add -d lightningcss browserslist

Vite 集成

基本设置
// 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'
  }
})
与 UnoCSS 搭配(推荐组合)
// 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'
  }
})
通过 Vite 使用 CSS Modules
// vite.config.ts - use css.lightningcss.cssModules (NOT css.modules)
export default defineConfig({
  css: {
    transformer: 'lightningcss',
    lightningcss: {
      cssModules: {
        pattern: '[hash]_[local]'
      }
    }
  }
})
草案语法功能
// Enable experimental CSS features
export default defineConfig({
  css: {
    transformer: 'lightningcss',
    lightningcss: {
      drafts: {
        customMedia: true
      }
    }
  }
})

CLI 用法

# 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

转换功能

Lightning CSS 会根据浏览器目标自动转译:

功能现代 CSS转译后的输出
嵌套.parent { .child { } }.parent .child { }
颜色函数oklch(0.7 0.15 180)rgb(...) 回退值
color-mix()color-mix(in srgb, red, blue)计算后的颜色值
light-dark()light-dark(white, black)媒体查询回退
逻辑属性margin-inlinemargin-left/margin-right
媒体范围语法(480px <= width <= 768px)(min-width: 480px) and (max-width: 768px)
厂商前缀user-select: none-webkit-user-select: none + 无前缀版本
数学函数clamp()、round()尽可能转换为静态值
自定义媒体查询@custom-media --mobile (max-width: 768px)内联媒体查询
:is() / :not()复杂选择器展开的回退写法
system-ui 字体font-family: system-ui跨平台字体栈

CSS Modules

Lightning CSS 内置 CSS modules 支持:

/* 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

替换 PostCSS 流程

PostCSS 插件Lightning CSS 等效项
autoprefixer内置(通过 targets)
postcss-preset-env内置(语法降级)
postcss-import--bundle 标志
postcss-nesting内置(通过 targets)
postcss-custom-mediadrafts.customMedia: true
cssnano--minify 标志
postcss-modulescssModules: true
迁移步骤
  1. 移除 PostCSS 依赖和 postcss.config.js
  2. 将 lightningcss 和 browserslist 添加为开发依赖
  3. 在 Vite 配置中设置 css.transformer: 'lightningcss'
  4. 设置 build.cssMinify: 'lightningcss'
  5. 通过 browserslist(.browserslistrc 或 package.json)配置目标
  6. 将 CSS modules 配置从 css.modules 移至 css.lightningcss.cssModules

浏览器目标

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

Agent 优化

场景命令
快速压缩lightningcss --minify input.css -o output.css
打包并压缩lightningcss --minify --bundle input.css -o output.css
指定目标lightningcss --minify --targets '>= 0.25%' input.css -o output.css
错误恢复lightningcss --error-recovery input.css -o output.css
检查 Vite 配置查看 vite.config.ts 中的 css.transformer 和 css.lightningcss
检查 browserslist查看 .browserslistrc 或 package.json 中的 browserslist

快速参考

标志描述
--minify压缩输出的 CSS
--bundle内联 @import 规则
--targets浏览器目标(browserslist 查询)
--sourcemap生成源映射
--error-recovery跳过无效规则,而不是报错
-o <file>输出文件路径

参考资料

评论

支持 Markdown