nuxt-lightningcss

Use the built-in lightningcss preprocessor of Vite with Nuxt.
Quick Setup
- Add
nuxt-lightningcss
dependency to your project
pnpm add -D nuxt-lightningcss
- Add
nuxt-lightningcss
to the modules
section of nuxt.config.ts
export default defineNuxtConfig({
modules: [
'nuxt-lightningcss'
]
})
That's it! You can now use lightningcss in your Nuxt app ✨
Configuration
To configure the module, add an options object with the lightningcss
key:
export default defineNuxtConfig({
modules: [
'nuxt-lightningcss'
],
lightningcss: {
}
})
interface ModuleOptions {
globals?: string[]
minify?: boolean
config?: Config | string
}
globals
: an array of stylesheet paths to import in all other stylesheets. This is especially useful when you want to transpile custom media queries.
minify
: set to false to disable lightningcss minification (always disabled in development mode)
config
: lightningcss configuration file or object. By default, the module will look for a lightningcss.config.ts
file in the root of your project.
Configuration file
You can use a separate configuration file to define lightningcss configuration:
import { defineLightningCSSConfig } from 'nuxt-lightningcss'
export default defineLightningCSSConfig({
})
Targets
The lightningcss targets
option is automatically set from you project browserslist configuration (either in .browserslistrc
, browserslist
, package.json
or in the BROWSERSLIST
environment variable). If there isn't an explicit browserslist configuration in your project, the defaults
preset will be used. This can also be overridden from the lightningcss configuration:
import { defineLightningCSSConfig } from 'nuxt-lightningcss'
import { browserslistToTargets } from 'lightningcss'
import browserslist from 'browserslist'
export default defineLightningCSSConfig({
targets: browserslistToTargets(browserslist('> 0.5%, last 2 versions, Firefox ESR, not dead'))
})
Minification
By default, stylesheets are minified in production using lightningcss. You can disable minification using the following configuration (always disabled in development mode):
import { Features } from 'lightningcss'
export default defineNuxtConfig({
modules: [
'nuxt-lightningcss'
],
lightningcss: {
minify: false
}
})
Custom media queries
Custom media queries can be transpiled using lightningcss, but since their actual definition is removed from the bundled stylesheets, they need to be imported in all stylesheets that use them. You can do that using the following configuration:
import { Features } from 'lightningcss'
export default defineNuxtConfig({
modules: [
'nuxt-lightningcss'
],
lightningcss: {
globals: [
'~/assets/stylesheets/media-queries.css'
],
config: {
include: Features.CustomMediaQueries,
drafts: {
customMedia: true
}
}
}
})
Development
pnpm install
pnpm dev:prepare
pnpm dev
pnpm dev:build
pnpm lint
pnpm test
pnpm test:watch
pnpm release