sonofmagic / weapp-tailwindcss

weapp-tailwindcss - bring tailwindcss to weapp ! 把 tailwindcss 原子化思想带入小程序开发吧 !
https://tw.icebreaker.top
MIT License
1.22k stars 88 forks source link

[Bug]: 静态class中使用带有/符号的类名时,无法与动态class同时使用 #303

Closed hxnzyl closed 3 months ago

hxnzyl commented 4 months ago

weapp-tailwindcss 版本

3.2.1

框架 & 小程序平台

uniapp vue3 vite

最小复现bug的代码仓库链接

No response

复现bug的步骤

<template> <view class="h-2/4" :class="{ 'text-red': test }">Test</view> </template>

<script setup lang="ts"> const test = ref(true) </script>

预期是什么?

编译通过

实际发生了什么?

编译失败

运行环境

微信开发工具
{
  "latestNw": "0.54.1",
  "previousNw": "0.49.3"
}

其他附加信息

No response

sonofmagic commented 4 months ago

我在我的 https://github.com/sonofmagic/uni-app-vite-vue3-tailwind-vscode-template 试了一下你这段代码,版本也是 3.2.1 wxml 的产物为:

<view class="{{['h-2s4', 'data-v-83a5a03c', a && 'text-red']}}">Test</view>

js 产物为:

const test = common_vendor.ref(true);

a: common_vendor.unref(test) ? 1 : "",

并没有出现报错的情况,所以你可以尝试跑一下我这个模板,

或者另外,能提供一个复现的 demo 嘛?我怀疑是其他安装的包的环境的问题 比如 uni-app 的版本啥的,另外你也可以把具体的报错信息贴一下,看看到底是什么报错了。

sonofmagic commented 4 months ago

你是不是应该写 text-red-400 这种带序号的, text-red 不是一个有效的 tailwindcss 类名啊,或者你应该写 text-[red]

hxnzyl commented 3 months ago

你是不是应该写 text-red-400 这种带序号的, text-red 不是一个有效的 tailwindcss 类名啊,或者你应该写 text-[red]

只是写的一个示例,换成其它的一样。

hxnzyl commented 3 months ago

我在我的 https://github.com/sonofmagic/uni-app-vite-vue3-tailwind-vscode-template 试了一下你这段代码,版本也是 3.2.1 wxml 的产物为:

<view class="{{['h-2s4', 'data-v-83a5a03c', a && 'text-red']}}">Test</view>

js 产物为:

const test = common_vendor.ref(true);

a: common_vendor.unref(test) ? 1 : "",

并没有出现报错的情况,所以你可以尝试跑一下我这个模板,

或者另外,能提供一个复现的 demo 嘛?我怀疑是其他安装的包的环境的问题 比如 uni-app 的版本啥的,另外你也可以把具体的报错信息贴一下,看看到底是什么报错了。

可能吧。改天有空在回复你!我现在只能尽量避免那种写法= =

hxnzyl commented 3 months ago

我在我的 https://github.com/sonofmagic/uni-app-vite-vue3-tailwind-vscode-template 试了一下你这段代码,版本也是 3.2.1 wxml 的产物为:

<view class="{{['h-2s4', 'data-v-83a5a03c', a && 'text-red']}}">Test</view>

js 产物为:

const test = common_vendor.ref(true);

a: common_vendor.unref(test) ? 1 : "",

并没有出现报错的情况,所以你可以尝试跑一下我这个模板,

或者另外,能提供一个复现的 demo 嘛?我怀疑是其他安装的包的环境的问题 比如 uni-app 的版本啥的,另外你也可以把具体的报错信息贴一下,看看到底是什么报错了。

package.json 如下: { "name": "uniapp-vite-template", "version": "0.0.0", "scripts": { "dev:app": "uni -p app", "dev:app-android": "uni -p app-android", "dev:app-ios": "uni -p app-ios", "dev:custom": "uni -p", "dev:h5": "uni", "dev:h5:ssr": "uni --ssr", "dev:mp-alipay": "uni -p mp-alipay", "dev:mp-baidu": "uni -p mp-baidu", "dev:mp-jd": "uni -p mp-jd", "dev:mp-kuaishou": "uni -p mp-kuaishou", "dev:mp-lark": "uni -p mp-lark", "dev:mp-qq": "uni -p mp-qq", "dev:mp-toutiao": "uni -p mp-toutiao", "dev:mp-weixin": "uni -p mp-weixin", "dev:mp-xhs": "uni -p mp-xhs", "dev:quickapp-webview": "uni -p quickapp-webview", "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei", "dev:quickapp-webview-union": "uni -p quickapp-webview-union", "build:app": "uni build -p app", "build:app-android": "uni build -p app-android", "build:app-ios": "uni build -p app-ios", "build:custom": "uni build -p", "build:h5": "uni build", "build:h5:ssr": "uni build --ssr", "build:mp-alipay": "uni build -p mp-alipay", "build:mp-baidu": "uni build -p mp-baidu", "build:mp-jd": "uni build -p mp-jd", "build:mp-kuaishou": "uni build -p mp-kuaishou", "build:mp-lark": "uni build -p mp-lark", "build:mp-qq": "uni build -p mp-qq", "build:mp-toutiao": "uni build -p mp-toutiao", "build:mp-weixin": "uni build -p mp-weixin", "build:mp-xhs": "uni build -p mp-xhs", "build:quickapp-webview": "uni build -p quickapp-webview", "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei", "build:quickapp-webview-union": "uni build -p quickapp-webview-union", "type-check": "vue-tsc --noEmit" }, "dependencies": { "@dcloudio/uni-app": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-app-plus": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-components": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-h5": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-mp-alipay": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-mp-baidu": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-mp-jd": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-mp-kuaishou": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-mp-lark": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-mp-qq": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-mp-toutiao": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-mp-weixin": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-mp-xhs": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-quickapp-webview": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-ui": "^1.5.5", "lodash": "^4.17.21", "pinia": "2.0.33", "pinia-plugin-persistedstate": "^3.2.1", "vue": "3.4.21", "vue-i18n": "9.13.1", "weapp-tailwindcss": "^3.2.1" }, "devDependencies": { "@dcloudio/types": "3.4.8", "@dcloudio/uni-automator": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-cli-shared": "3.0.0-alpha-4010720240511003", "@dcloudio/uni-h5-vue": "^3.0.0-alpha-4010720240511003", "@dcloudio/uni-stacktracey": "3.0.0-alpha-4010720240511003", "@dcloudio/vite-plugin-uni": "3.0.0-alpha-4010720240511003", "@types/lodash": "^4.17.4", "@types/node": "^20.12.12", "@uni-helper/vite-plugin-uni-tailwind": "^0.15.0", "@vue/runtime-core": "3.4.27", "@vue/tsconfig": "^0.5.1", "autoprefixer": "^10.4.19", "postcss-comment": "^2.0.0", "sass": "^1.77.1", "sass-loader": "^14.2.1", "tailwindcss": "^3.4.3", "typescript": "^5.4.5", "vite": "5.2.8", "vue-tsc": "^2.0.17" } }

sonofmagic commented 3 months ago

我看你同时安装了 weapp-tailwindcss@uni-helper/vite-plugin-uni-tailwind

这 2 个实际上做的是类似的,会产生冲突

给我看看你的 vite.config.[jt]s 看看你到底是怎么注册这种插件的。

正常情况下,你应该只用我这个,然后按照 https://github.com/sonofmagic/uni-app-vite-vue3-tailwind-vscode-template 这种配置方法,或者按照 https://weapp-tw.icebreaker.top/ 里面一步一步的配置方法就行,你那种写法是可以兼容的。

hxnzyl commented 3 months ago

我看你同时安装了 weapp-tailwindcss@uni-helper/vite-plugin-uni-tailwind

这 2 个实际上做的是类似的,会产生冲突

给我看看你的 vite.config.[jt]s 看看你到底是怎么注册这种插件的。

正常情况下,你应该只用我这个,然后按照 https://github.com/sonofmagic/uni-app-vite-vue3-tailwind-vscode-template 这种配置方法,或者按照 https://weapp-tw.icebreaker.top/ 里面一步一步的配置方法就行,你那种写法是可以兼容的。

这个可以忽略,安装了但并未使用

hxnzyl commented 3 months ago

1718158952610 1718159020912

sonofmagic commented 3 months ago

1718158952610 1718159020912

你确认用的是我的包吗,我的包是把 h-2/4 转化成 h-2s4 的,你这张图里是 h-2-s-4 ,感觉都不是我的包转换的, 假如你用 weapp-tailwindcss@3 版本的话,显然这个转换规则不对啊。

你把你 vite.config.ts 发一下,或者提供一个复现的 demo 实例,我看看。

sonofmagic commented 3 months ago

编译前的 vue 文件

image

编译后的 wxml 产物

image

hxnzyl commented 3 months ago

编译前的 vue 文件

image

编译后的 wxml 产物

image

大概知道问题在哪了。vite.config.ts中使用了#ifdef #ifndef。导致 weapp-tailwindcss 和 @uni-helper/vite-plugin-uni-tailwind 都注册了。单独使用 weapp-tailwindcss 是没有问题的!哈哈

sonofmagic commented 3 months ago

好的,那这个 issue 我先 close 了,到时候你再遇到问题在提 issue 吧。^_^