weapp-tailwindcss-webpack-plugin
TypeScript icon, indicating that this package has built-in type declarations

1.6.8 • Public • Published

logo

weapp-tailwindcss-webpack-plugin

star dt license weapp-tailwindcss-webpack-plug

tailwindcss JIT 思想带入小程序开发吧!

笔者之前写了一个 tailwindcss-miniprogram-preset,可是那个方案不能兼容最广泛的 Just in time 引擎,在写法上也有些变体。

于是笔者又写了一个 weapp-tailwindcss-webpack-plugin,这是一个 plugin 合集,包含 webpack/vite plugin,它会同时处理类 wxmlwxss 文件,从而我们开发者,不需要更改任何代码,就能让 jit 引擎兼容微信小程序。

此方案可兼容 tailwindcss v2/v3webpack v4/v5postcss v7/v8

随着 @vue/cli-service v5 版本的发布,uni-app 到时候也会转为 webpack5 + postcss8 的组合,到时候,我会升级一下 uni-app 的示例,让它从 tailwindcss v2 jit 升级到 tailwindcss v3 jit

Usage

uni-app (vue2/3)

使用方式 | Demo 项目

uni-app for vite (vue3)

使用方式 | Demo 项目

Taro v3 (React/vue2/3)

使用方式 | React Demo 项目 | vue2 Demo 项目 | vue3 Demo 项目

remax (react)

使用方式 | Demo 项目

rax (react)

使用方式 | Demo 项目

原生小程序(webpack5 mina)

使用方式 | Demo 项目

Options 配置项

配置项 类型 描述
htmlMatcher (assetPath:string)=>boolean 匹配 wxml等等模板进行处理的方法
cssMatcher (assetPath:string)=>boolean 匹配 wxss等等样式文件的方法
jsMatcher (assetPath:string)=>boolean 匹配 js文件进行处理的方法,用于 react
mainCssChunkMatcher (assetPath:string)=>boolean 匹配 tailwindcss jit 生成的 css chunk 的方法
framework (Taro 特有) react|vue2|vue3 由于 Taro 不同框架的编译结果有所不同,需要显式声明框架类型 默认react
customRuleCallback (node: Postcss.Rule, options: Readonly<RequiredStyleHandlerOptions>) => void 可根据 Postcss walk 自由定制处理方案的 callback 方法
cssPreflightRange 'view' | 'all' 全局dom选择器,只有在这个选择器作用范围内的dom会被注入 cssPreflight 的变量和默认样式。默认值为 'view' 即只对所有的 view 和伪元素生效,想要对所有的元素生效,可切换为 'all',此时需要自行处理和客户端默认样式的冲突
cssPreflight Record<string,string>| false 在所有 view节点添加的 css 预设,可根据情况自由的禁用原先的规则,或者添加新的规则。 详细用法如下:
// default 默认:
cssPreflight: {
  'box-sizing': 'border-box',
  'border-width': '0',
  'border-style': 'solid',
  'border-color': 'currentColor'
}
// result
// box-sizing: border-box;
// border-width: 0;
// border-style: solid;
// border-color: currentColor

// case 禁用所有
cssPreflight: false
// result
// none

// case 禁用单个属性
cssPreflight: {
  'box-sizing': false
}
// border-width: 0;
// border-style: solid;
// border-color: currentColor

// case 更改和添加单个属性
cssPreflight: {
  'box-sizing': 'content-box',
  'background': 'black'
}
// result
// box-sizing: content-box;
// border-width: 0;
// border-style: solid;
// border-color: currentColor;
// background: black

使用 arbitrary values

详见 tailwindcss/using-arbitrary-values 章节 | Sample

关于rem转化rpx

假如你想要把项目里,所有满足条件的 rem 都转化成 rpx,那么 postcss plugin: postcss-rem-to-responsive-pixel 适合你。

假如你想缩小一下范围,只把 tailwindcss 中默认的工具类的单位(非jit生成的class),从 rem 转变为 rpx,那么 tailwindcss preset: tailwindcss-rem2px-preset 适合你。

使用方式见 Demo 和对应 npm 包的文档。

常见问题

目前微信开发者工具会默认开启 代码自动热重载 (compileHotReLoad) 功能,这个功能在原生开发中表现良好,但在 uni-apptaro 等等的框架中,存在一定的问题,详见issues#37,所以如果你遇到了此类问题,建议关闭 代码自动热重载 功能。

常见问题见 FAQ.md

Related projects

模板 template

uni-app-vite-vue3-tailwind-vscode-template

uni-app-vue3-tailwind-vscode-template

uni-app-vue2-tailwind-vscode-template

weapp-native-mina-tailwindcss-template

预设 tailwindcss preset

tailwindcss-miniprogram-preset

Bugs & Issues

目前这个插件正在快速的开发中,如果遇到 Bug 或者想提出 Issue

欢迎提交到此处

Package Sidebar

Install

npm i weapp-tailwindcss-webpack-plugin@1.6.8

Version

1.6.8

License

MIT

Unpacked Size

1.5 MB

Total Files

78

Last publish

Collaborators

  • icebreaker