1.安装tailwindcss

pnpm install tailwindcss -D

2.根目录创建 tailwind-input.css 并写入以下内容

/* 如果是小程序的话,这一行注释掉,因为tailwind base模块提供的一些样式选择器是基于*,这在小程序中会报错 */  
/* @tailwind base; */
@tailwind components;
@tailwind utilities;

3.修改App.vue引入tailwind.css

<style>
    /*每个页面公共css */
    @import "@/static/tailwind.css";
</style>

4.在根目录创建 tailwind.config.js 并写入以下内容

/** @type {import('tailwindcss').Config} */
module.exports = {
    separator: '__', // 如果是小程序项目需要设置这一项,将 : 选择器替换成 __,之后 hover:bg-red-500 将改为 hover__bg-red-500  
    corePlugins: {
        // 预设样式  
        preflight: false, // 一般uniapp都有预设样式,所以不需要tailwindcss的预设  

        // 以下功能小程序不支持  
        space: false, // > 子节点选择器  
        divideWidth: false,
        divideColor: false,
        divideStyle: false,
        divideOpacity: false,
    },

    // 指定要处理的文件  
    content: [
        './pages/**/*.{vue,js}',
        './main.js',
        './App.vue',
        './index.html'
    ],
    theme: {
        // 字号,使用 App.vue 中的 --x-font-size 样式变量配置  
        fontSize(config) {
            const list = ['2xs', 'xs', 'sm', 'base', 'md', 'lg', 'xl', '2xl', '3xl'];
            let result = {}
            list.forEach(it => {
                result[it] = `var(--x-font-size-${it})`
            })
            return result
        },
        extend: {
            // 间距,tailwindcss中默认间距是rem单位,可以统一设置为uniapp的rpx单位。  
            // 类似的设置根据项目需求自己调整一下就好了,没必要去安装别人的预设,其实主要是小程序不兼容的css比较多,H5和App基本都直接兼容tailwindcss默认的预设  
            spacing(config) {
                let result = {
                    0: '0'
                }
                // 允许的数值大一些也无所谓,最后打包tailwindcss会摇树优化,未使用的样式并不会打包  
                for (let i = 1; i <= 300; i++) {
                    result[i] = `${i}rpx`
                }
                return result
            },
            // 增加颜色板,现在主流UI组件库大都是采用css变量实现定制主题,所以这里引用了全局的css变量,这个css变量的定义位置可以在 App.vue 中 page{} 选择器下  
            // 其实tailwindcss只是一个css工具,不必局限于它内部提供的东西,灵活运用css变量这些特性完全可以整合出自己的生产力工具  
            colors: {
                'primary': 'var(--x-color-primary)',
                'tips': 'var(--x-color-tips)'
            },
        },
    },
    plugins: [],
}

5.修改 package.json 添加scripts

"scripts": {
        "tailwind-dev": "tailwindcss -i ./tailwind-input.css -o ./static/tailwind.css --watch",
        "tailwind-build": "tailwindcss -i ./tailwind-input.css -o ./static/tailwind.css"
    },

6.添加 vite.config.js

// vite.config.js  
import { defineConfig } from 'vite';  
import uni from '@dcloudio/vite-plugin-uni';  
  
/** ==== 处理 tailwind cli 的自动启动和打包 ==== */  
const child_process = require('child_process')  
let tailwindMode = process.env.NODE_ENV  
  
// 主进程输出  
console.log(`[tailwindcss] 开始${tailwindMode == 'production' ? '生产环境打包' : '开发模式监听'}`);  
child_process.exec(  
    // 这里指令对应 package.json 中的 npm scripts  
    tailwindMode == 'production'  
        ? 'npm run tailwind-build'  
        : 'npm run tailwind-dev',  
    {  
        cwd: __dirname, // 切换目录到当前项目,必须  
    },  
    (error, stdout, stderr) => {  
        // tailwind --watch 是一个持久进程,不会立即执行回调  
        // process.stdout.write('tailwind success')  
        if (error) {  
            console.error('[tailwindcss] 异常,请检查');  
            console.error(error);  
            console.error(stdout);  
            console.error(stderr);  
        }  
        if(tailwindMode == 'production'){  
            console.log('[tailwindcss] 生产环境打包完成');  
        }  
    })  
  
export default defineConfig({  
    plugins: [uni()],  
});