unplugin-transform-class

English | 简体中文

transfrom `html class` selector by custom rules to fit the functional semantics,`unplugin-transform-we-class` rename to `unplugin-transform-class` --- static class ```html tracking-[2/5] ``` setting rules ```js const rules = { '/': '-s-', ':': '-c-', '[': '-fl-', ']': '-fr-', } transformClass({ rules }) ``` transfrom ```html tracking-[2/5] ``` --- dynamic class ```html 111111111 111111111 ``` transfrom ```html 111111111 111111111 ``` ## installation ```shell npm i unplugin-transform-class -D ```
Vite
```ts import { defineConfig } from 'vite' import transformClass from 'unplugin-transform-class/vite' // https://vitejs.dev/config/ export default defineConfig({ plugins: [ // https://github.com/MellowCo/unplugin-transform-class transformClass(), ], }) ```
webpack
```ts const transformClass = require('unplugin-transform-class/webpack') module.exports = { configureWebpack: { plugins: [ // https://github.com/MellowCo/unplugin-transform-class transformClass(), ], }, } ```
--- ## usage ### options ```ts export interface Options { /** * custom transform Rules * @default * { '.': '_dl_', '/': '_sl_', ':': '_cl_', '%': '_pes_', '!': '_el_', '#': '_wn_', '(': '_lbl_', ')': '_lbr_', '[': '_lfl_', ']': '_lfr_', '$': '_do_', ',': '_lco_', '=': '_eqe_', } */ rules?: Record /** * exclude * @default [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/] */ exclude?: FilterPattern /** * include * @default [/\.[jt]sx?$/, /\.vue$/, /\.vue\?vue/] */ include?: FilterPattern } ``` --- ### custom transform Rules ```ts // webpack // const transformClass = require('unplugin-transform-class/webpack') // import transformClass from 'unplugin-transform-class/webpack' // vite import transformClass from 'unplugin-transform-class/vite' const myRules = { '.': '-ddd-', '/': '-ss-', ':': '-cc-', '%': '-pp-' } transformWeClass({ rules: myRules }) ``` --- ### exclude include ```ts // webpack // const transformClass = require('unplugin-transform-class/webpack') // import transformClass from 'unplugin-transform-class/webpack' // vite import transformClass from 'unplugin-transform-class/vite' transformWeClass({ exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/, /[\\/]my-folder[\\/]/], include: [/\.vue$/, /\.vue\?vue/] }) ``` --- ### utils ```ts import { defaultRules, escapeRegExp, restoreSelector, transformCode, transformEscapESelector, transformSelector } from 'unplugin-transform-class/utils' const code = ` tracking-[2/5] ` const rules = { '/': '-s-', ':': '-c-', '[': '-fl-', ']': '-fr-', } const newCode = transformCode(code, rules) ``` --- ## use case ### use atomic css in miniprogram > transfrom the escape class not supported by miniprogram, like `\\`,`\:` `\[` `\$` `\.` , implement the atomic css in miniprogram ![](https://fastly.jsdelivr.net/gh/MellowCo/image-host/2022/202209181628083.png) > for example use [unocss-preset-weapp](https://github.com/MellowCo/unocss-preset-weapp), use unocss development in miniprogram ![image-20220703141301371](https://fastly.jsdelivr.net/gh/MellowCo/image-host/2022/202207031413496.png) related links * [unocss-preset-weapp](https://github.com/MellowCo/unocss-preset-weapp) - the unocss preset for wechat miniprogram.