Skip to content
微信小程序使用tailwindcss的配置(非常详细)

这里使用了第三方库来实现:https://weapp-tw.icebreaker.top/

官方配置步骤一: https://weapp-tw.icebreaker.top/docs/quick-start/native/install

官方配置步骤二:https://weapp-tw.icebreaker.top/docs/quick-start/native/install-plugin

我下面的操作步骤跟官方步骤(步骤一和步骤二连起来)一比一还原的,避免某天官网挂了或者教程丢了

官网上面还有框架类的配置,如uniapp配置,个人建议uniapp原生小程序建议看这个,其他的使用官方版的tailwindcss去配置就可以了,因为uniapp会编译到小程序里面,小程序里面有很多不支持原生的选择器之类的,如果项目牵扯到小程序,建议看这个文档进行配置

一. 安装与配置 tailwindcss

前言

很荣幸,我们在 weapp-tailwindcss@3.2.0 版本开始,引入了微信小程序原生支持的能力。 (其他平台的原生小程序开发,也非常容易兼容)

接下来让我们看看,如何进行使用吧!

本教程演示的是,使用微信开发者工具创建的原生 js 小程序,以及原生 js skyline 小程序使用 tailwindcss 的方式

运行环境

请确保你的 nodejs 版本 >=16.6.0。目前低于 16 的长期维护版本(偶数版本) 都已经结束了生命周期,建议安装 nodejsLTS 版本,详见 nodejs/release

假如你安装的 nodejs 太新,可能会出现安装包不兼容的问题,这时候可以执行安装命令时,使用 --ignore-engines 参数进行 nodejs 版本的忽略 。

创建项目

打开微信开发者工具, 点击 + 创建一个项目,依次选择:

  1. AppID 使用测试号
  2. 开发模式: 小程序
  3. 后端服务: 不使用云服务
  4. 模板选择: 第二项选择 基础
  5. 选择 JS 基础模板

使用 JS 基础模板创建的项目,依然可以使用 Typescript

首先安装本插件前,我们需要把 tailwindcss 对应的环境和配置安装好。

0. 初始化 package.json

首先,假如你使用原生的 JS 模板创建的项目。

在创建的项目目录下,是没有 package.json 文件 (原生的 TS 模板有这个文件), 你需要执行命令:

npm init -y,快速创建一个 package.json 文件在你的项目下

1. 使用包管理器安装 tailwindcss

然后执行:

bash
npm i -D tailwindcss postcss autoprefixer
# 初始化 tailwind.config.js 文件
npx tailwindcss init

这样 tailwindcss 就被安装到你项目本地了

2. 配置 tailwind.config.js

tailwind.config.jstailwindcss 的配置文件,我们可以在里面配置 tailwindcss 的各种行为。

这里给出了一份 JS微信小程序 通用示例,具体要根据你自己项目的目录结构进行配置

tailwind.config.js

js
/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    // 添加你需要提取的文件目录
    'components/**/*.{wxml,js,ts}',
    'pages/**/*.{wxml,js,ts}',
    // 不要使用下方的写法,这会导致 vite 开发时监听文件数量爆炸
    // '**/*.{js,ts,wxml}', '!node_modules/**', '!dist/**'
  ],
  // 假如你使用 ts 模板,则可以使用下方的配置
  // content: ['miniprogram/**/*.{ts,js,wxml}'],
  corePlugins: {
    // 小程序不需要 preflight 和 container,因为这主要是给 h5 的,如果你要同时开发小程序和 h5 端,你应该使用环境变量来控制它
    preflight: false,
    container: false,
  }
}

3. 在项目目录下创建 postcss.config.js 并注册 tailwindcss

内容如下:

postcss.config.js

js
module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  }
}

这个文件和 tailwind.config.js 平级

4. 引入 tailwindcss

在你的小程序项目入口 app.wxss 文件中,引入 tailwindcss 使它在小程序全局生效

css
@tailwind base;
@tailwind components;
@tailwind utilities;

app.wxss 加入这一段代码之后,微信开发者工具会报错。不用担心,这是因为我们还没有完全配置好。

接下来,赶紧进入下一步,安装 weapp-tailwindcss 并运行吧!

二. 安装这个插件并运行

安装插件

在项目目录下,执行:

bash
npm i -D weapp-tailwindcss weapp-vite

这样 weapp-tailwindcssweapp-vite 就被安装在你的本地了

执行初始化命令

在命令行中运行

js
npx weapp-vite init

这个命令会对现有的原生小程序项目,进行 weapp-vite 的初始化

执行后,会发现主要有许多文件改动,CLI 主要做了 3 件事情:

  • 创建 vite.config.ts 文件,这个是 weapp-vitevite 的配置文件
  • 修改 package.json, 添加 devbuild 开发和构建脚本,还有构建 npm 和打开微信开发者工具
  • 修改 project.config.json 内容,来适配构建产物
  • 添加适配 vite 的 dtstsconfig.json

安装所有的依赖包

在执行完成 weapp-vite init 初始化命令之后,我们需要在项目里执行一下安装命令:

npm i

注册插件

package.json 添加下列脚本:

package.json

json
{
  "scripts": {
    "postinstall": "weapp-tw patch"
  }
}

然后在你的 vite.config.ts 里对插件进行注册:

vite.config.ts

ts
import { defineConfig } from 'weapp-vite/config'
import { UnifiedViteWeappTailwindcssPlugin as uvwt } from 'weapp-tailwindcss/vite'

export default defineConfig({
  plugins: [
    uvwt({
      rem2rpx: true,
    }),
  ],
})

开始运行

使用 npm run dev 进入开发模式, 此模式带有热更新的,主要用于开发

使用 npm run build 进行构建

不论是 npm run dev 还是 npm run build, 他们的构建产物,都在工程目录下的 dist 目录

使用微信开发者工具,直接导入工程目录,然后即可预览效果!

注意不是导入 dist 目录,是你工程的根目录! 通常是 dist 的父级目录,不要搞错了!

配置好的模板

假如你配置不成功,你可以参考以下模板进行配置文件对比:

weapp-vite-tailwindcss-template

或者直接执行命令:

bash
npx weapp-vite create my-app

此命令会在当前目录下,创建一个目录名为 my-appweapp-vite + weapp-tailwindcss 集成模板

原生组件样式的隔离性

提示

发现很多用户,在使用原生开发的时候,经常会问,为什么 tailwindcss 样式对自定义组件不生效。

这可能有以下几个原因:

  1. 代码文件不在 tailwind.config.jscontent 配置内
  2. 原生小程序组件是默认开启 组件样式隔离 的,默认情况下,自定义组件的样式只受到自定义组件 wxss 的影响。而 tailwindcss 生成的工具类,都在 app.wxss 这个全局样式文件里面。不属于组件内部,自然不生效。

这时候可以在你组件的 json 文件配置中,设置下面一行 styleIsolation 来开启样式共享:

custom-component.json

json
{
  "styleIsolation": "apply-shared"
}

apply-shared 表示页面 wxss 样式将影响到自定义组件,但自定义组件 wxss 中指定的样式不会影响页面;

来让组件应用到 app.wxss 里的样式。

更多的文档详见: 微信小程序相关开发文档

想了解更多 weapp-vite

更多场景和配置,请查看 weapp-vite 文档网站