用于将 react style props 转化为 windicss class, 实际上也就是使用 class 来操作行内样式。
playgroud: https://creampnx-x.github.io/sun-dock/app/dist/
掘金:https://juejin.cn/post/7207358714794229816/
npm:https://www.npmjs.com/package/@sun-dock/dock-cli
sun-dock 会将不能转化的 style 保留下来,不会破毁代码逻辑。
pnpm i @sun-dock/dock-cli -D将相应的命令添加到 package.json 中,bin.name 是 dock:
"scripts": {
"dock": "dock"
}你甚至可以建个空项目只为了快速查询 windicss class,或者将 dock-cli 安装到全局下直接使用查询。
使用--query参数通过以下命令查询:
pnpm run dock --query=padding:4,paddingTop:4,textAlign:\"center\"
# The input style pair "padding:4,paddingTop:4,textAlign:"center"" will tranform like this:
# <div className="p-4px pt-4px text-center" />;可以看到 dock-cli 打印了一个 JSX,其中就包含了生成的所有 class,不再需要搜索直接 一步到位。
使用--filename对的单个文件进行转换:
pnpm run dock --filename=Hello.tsx为什么不支持批量修改?
考虑到可能出现的 bug 影响布局当时没发现但导致线上缺陷,所以提供单文件原子化修改,单功能验证避免大规模纰漏。
你也可以在本地写脚本遍历文件夹,再在单文件上使用
dock-cli。ref:遍历文件夹内文件
pnpm i @sun-dock/s2w-loader -D一个 webpack loader 提供编译时兜底能力防止某处没有修改的逃逸行为。@sun-dock/s2w-loader 的核心是 @sun-dock/core, loader 只是为他提供了一个响亮的名字。
处理 style 的核心包,你能使用它创建任何的插件,他只提供一个能力——转换 style 到 windcss class。默认导出一个函数接收一个包含代码的string参数返回了转换后的代码,另外导出了小驼峰
形式的 style 到 class的转换表。详情查看源码: core/config/index.js.
-
如果你想要使用某个
windicss样式,但是却不知道具体的class是什么,那么你需要点开官网(加载)、点开搜索(加载)、输入样式(加载且不一定正确)、查看究竟是哪个(思考)... 在这个过程中因为一个样式浪费了巨大的时间,且有可能下次还会忘记,完全是低效的,这也是为什么即使项目中配置了 windicss 但还是有很多开发者会使用 style 的一个原因。现在使用dock-cli的查询功能就可以避免低效。 -
style拥有性能劣势但是类型优势,在开发中可以通过关键词匹配+回车直接编写,简单方便。但是它会引起重复渲染,尽管在React 18之后这种情况可能会被解决, 但style依旧是个非常差劲的选择,原因如下:
因为行内的 style object 在 React 组件重复渲染中总是新的,就像:
<div style={{ color: 'red' }} />这是因为 props 比较使用 Object.is, 而两个对象相等只能是相同的引用。
详见 减少重复渲染 将
object转化为string将减少重复渲染提高性能。
v1.0.3
- add
!important.
v1.0.4
- add
%|calcz as => [% | calc];
v1.0.5
- fix font weight