Windi CSS for Nuxt.js
nuxt-windicss
Windi CSS for Nuxt.js! ⚡️
Next generation utility-first CSS framework.
Features
- ? On-demand CSS utilities (Compatible with Tailwind CSS v2) and native elements style resetting
- ? Use directives in any CSS (SCSS, LESS, etc)
@apply
,@variants
,@screen
,@layer
,theme()
, - ? Support Utility Groups – e.g.
bg-gray-200 hover:(bg-gray-100 text-red-300)
- ??? Plays nicely with Nuxt v3, Nuxt v2, @nuxt/vite and @nuxt/content
- ? Integrated with windicss-analysis
Install
yarn add nuxt-windicss -D
# npm i nuxt-windicss -D
Usage
Within your nuxt.config.js
add the following.
// nuxt.config.js
export default {
buildModules: [
'nuxt-windicss',
],
}
Nuxt 3
import { defineNuxtConfig } from 'nuxt3'
export default defineNuxtConfig({
buildModules: [
'nuxt-windicss',
],
})
Typescript
For Nuxt config typescript support, add the module within your tsconfig.json
.
{
"compilerOptions": {
"types": [
"nuxt-windicss"
]
}
}
Windi Analyzer
An analyser tool for Windi CSS. Browse your utilities usages, have an overview of your design system, identify “bad practices”, and more!
You can enable Windi Analzyer using the Nuxt config. The analyser is only available in development mode.
export default defineNuxtConfig({
buildModules: [
'nuxt-windicss',
],
windicss: {
analyze: true
}
})
Alternatively you can provide an object to control the analysis or the server.
windicss: {
analyze: {
analysis: {
interpretUtilities: false,
}
// see https://github.com/unjs/listhen#options
server: {
port: 4444,
open: true,
}
}
}
Migrating from tailwind
This module won’t work with @nuxtjs/tailwindcss
, you will need to remove it.
buildModules: [
- '@nuxtjs/tailwindcss',
],
If you have a tailwind.config.js
, please rename it to windi.config.js
or windi.config.ts
.
Follow the migration guide for other change details.
Ordering (optional)
By default, this all windi layers will be automatically imported for you.
If you’d like to change the layout ordering you can include the layers in any order you like.
For example, if you had a main.css
which had h1 { margin-bottom: 30px; }
, you might do something like this:
// nuxt.config.js
export default {
// ...
css: [
// windi preflight
'virtual:windi-base.css',
// your stylesheets which overrides the preflight
'@/css/main.css',
// windi extras
'virtual:windi-components.css',
'virtual:windi-utilities.css',
],
}
Documentation
Read the documentation for more details.
Credits
- Windy team
- @antfu Based on his Rollup / Vite implementation & his util package
License
MIT License © 2021 Harlan Wilton