参与一下 unocss 开发
Unocss
unocss
是个强大的原子化 CSS 引擎,可以让你无需考虑样式的命名,按需生成样式
比如
1 | <div mt-5></div> |
就会自动生成样式
1 | [mt-5=""]{margin-top:1.25rem;} |
发现需求
最近在做一个 Hexo
的主题,用到了 unocss
1 | import { defineConfig, presetUno, presetAttributify, presetIcons } from 'unocss' |
可以看到我配置了 cli
,执行 unocss
它会获取 layout
下的所有 .ejs
文件
生成的样式输出到 source/css/style.css
但我如果想分成多个文件生成,比如根据 layout
下的文件夹、文件名等信息生成不同的样式文件
扒拉了一下生成文件的源码
1 | const outFile = resolve(options.cwd || process.cwd(), options.outFile ?? 'uno.css') |
可以看到,outFile
只是拼接了程序执行目录和你设置的 outFile
,如果没设置就默认生成 uno.css
所以我想着优化一下,让 outFile
可以支持例如 source/css/[dirname]/[name].css
的写法,或者直接是个函数
类似这样
1 | { |
Uno 启动!
第一步,fork 项目、下载源码 unocss,参考其他人的 PR,fork 后还需要创建一个分支,格式是
git 提交类型/简单的修改描述
例如我创建的分支叫
feat/out-file
下一步,安装,
pnpm install
,安装后执行pnpm dev
,因为是monorepo
,所以会在packages
下的每个子项目中安装、执行dev
执行后每个子项目中会生成
dist
,开发模式下会使用jiti
来在执行时编译ts
文件并执行接下来,你只需要对
src/*.ts
进行修改即可
最后
头回知道 jiti
,这种开发方式真的太爽了,不需要频繁执行 tsc
,学到
我先去改了,争取 PR 成功合并
汇报
写完了发现 unocss
本身就支持多个输出文件功能,再加上几个单元测试没过,后面就不想搞了
最后在托尼老师的开源探店投了一稿:开源探店直播 项目搜集
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 怠惰のコエ - imba久期 BLOG!
评论