Skip to content

Repository files navigation

UnoCSS Applet logo

UnoCSS Applet

在小程序(UniAppTaro)中使用UnoCSS,兼容不支持的语法。

NPM version NPM Downloads Bundle License Ask DeepWiki

预设和插件

各 preset / transformer 与上游 UnoCSS 的兼容关系、不支持项及变通方案见 COMPATIBILITY.md

安装

npm i unocss-applet --save-dev # with npm
yarn add unocss-applet -D # with yarn
pnpm add unocss-applet -D # with pnpm

兼容性

建议始终使用 Node.js 最新的 LTS 版本。

unocss-applet 当前已验证支持 UnoCSS ~66.10.0peerDependencies 锁定),需要 Node.js >= 22.12(原因见 COMPATIBILITY.md)。各 preset / transformer 与上游的兼容关系、不支持项及变通方案详见 COMPATIBILITY.md

各版本对应关系如下(依据各 git tag 与 npm 发布的 peerDependencies / engines):

unocss-applet unocss Node.js 备注
0.14.0 ~66.8.1 >=22.12 本包 engines.node 声明;运行时依赖 magic-string 升级至 1.x(仅 ESM),Taro Webpack 等 CJS 加载链依赖 Node 22.12+ 默认启用的 require(esm)
0.13.8 ~66.7.5 未声明 0.14.0 前未声明 engines;自身依赖 magic-string@0.30.x(CJS + ESM 双格式),发布基于 Node 22 LTS。
0.13.00.13.7 ~66.7.4 未声明 同上;0.13.0 起 peerDependencies>=66.0.0 收紧为 ~66.7.4,上游发布包自 66.7.0 起也不再声明 engines
0.12.2 >=66.0.0 >=14(上游声明) 0.12.x 唯一发布版,实际开发/测试基于 66.4。
0.10.00.11.0 >=66.0.0 >=14(上游声明) 实际开发/测试基于 66.0。
0.8.30.9.0 >=0.62 >=14(上游声明) 发布环境 Node 18。
0.8.00.8.2 >=0.59 >=14(上游声明)
< 0.8.0 未声明 peerDependencies.unocss

0.12.x 及更早版本允许的 >=66.0.0 / >=0.62 是宽松下限,未逐一验证上限;如遇生成异常,请优先按上表对齐 UnoCSS 版本。

使用

UnoCSS 配置

uno.config.ts
import type { Preset, SourceCodeTransformer } from 'unocss'
import { defineConfig, presetAttributify } from 'unocss'

import {
  presetApplet,
  presetRemRpx,
  transformerAttributify,
  transformerHover,
} from 'unocss-applet'

// uni-app
const isApplet = process.env?.UNI_PLATFORM?.startsWith('mp-') ?? false
// taro
// const isApplet = process.env.TARO_ENV !== 'h5'
const presets: Preset[] = []
const transformers: SourceCodeTransformer[] = []

if (isApplet) {
  presets.push(presetApplet())
  presets.push(presetRemRpx())
  transformers.push(transformerAttributify({ ignoreAttributes: ['block'] }))
  transformers.push(transformerHover())
}
else {
  presets.push(presetApplet())
  presets.push(presetRemRpx({ mode: 'rpx2rem' }))
  presets.push(presetAttributify())
}

export default defineConfig({
  presets: [
    // ...
    ...presets,
  ],
  transformers: [
    // ...
    ...transformers,
  ],
})


平台配置

UniApp + Vue3 + Vite

vite.config.ts(UnoCSS v0.58 和更低版本)/ vite.config.mts(UnoCSS v0.59 和更高版本)

// use @uni-helper/plugin-uni support ESM
import Uni from '@uni-helper/plugin-uni'
import UnoCSS from 'unocss/vite'
import { defineConfig } from 'vite'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    Uni(),
    UnoCSS() as any,
  ],
})

main.ts

import 'uno.css'


Taro v3.6 / v4 + React + Webpack5

config/index.js(UnoCSS v0.59 和更高版本)

import { createSwcRegister, getModuleDefaultExport } from '@tarojs/helper'

export default async () => {
  createSwcRegister({
    only: [filePath => filePath.includes('@unocss')],
  })
  const UnoCSS = getModuleDefaultExport(await import('@unocss/webpack'))
  return {
    mini: {
      // ...
      webpackChain(chain, _webpack) {
        chain.plugin('unocss').use(UnoCSS())
      }
    },
    h5: {
      // ...
      webpackChain(chain) {
        chain.plugin('unocss').use(UnoCSS())
      }
    }
  }
}

config/index.js(UnoCSS v0.58 和更低版本)

import UnoCSS from '@unocss/webpack'

const config = {
  mini: {
    // ...
    webpackChain(chain, _webpack) {
      chain.plugin('unocss').use(UnoCSS())
    },
  },
  h5: {
    // ...
    webpackChain(chain) {
      chain.plugin('unocss').use(UnoCSS())
    },
  },
}

app.ts

import 'uno.css'

小程序端(weapp 等)与 H5 端均已验证可正常编译并生成工具类(Taro 4.2 + UnoCSS 66.10,Taro Webpack 链路需要 patches/@unocss__webpack@66.10.0.patch,背景见 COMPATIBILITY.md)。完整可运行示例见仓库内 examples/taro


示例

仓库内集成示例(均启用了上游 presetIcons):

社区示例:

感谢

License

MIT License © 2022-PRESENT Neil Lee 和所有贡献者。

About

Using UnoCSS in applet(UniApp / Taro) to be compatible with unsupported syntax. 在小程序中使用UnoCSS,兼容不支持的语法。

Topics

Resources

Contributing

Stars

256 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages