Unocss
unocss 是个强大的原子化 CSS 引擎,可以让你无需考虑样式的命名,按需生成样式
比如
<div mt-5></div>就会自动生成样式
[mt-5=""]{margin-top:1.25rem;}发现需求
最近在做一个 Hexo 的主题,用到了 unocss
import { defineConfig, presetAttributify, presetIcons, presetUno } from 'unocss'
export default defineConfig({
presets: [presetUno(), presetAttributify(), presetIcons()],
cli: {
entry: {
patterns: ['layout/**/*.ejs'],
outFile: 'source/css/style.css'
}
}
})可以看到我配置了 cli,执行 unocss 它会获取 layout 下的所有 .ejs 文件
生成的样式输出到 source/css/style.css
但我如果想分成多个文件生成,比如根据 layout 下的文件夹、文件名等信息生成不同的样式文件
扒拉了一下生成文件的源码
const outFile = resolve(options.cwd || process.cwd(), options.outFile ?? 'uno.css')可以看到,outFile 只是拼接了程序执行目录和你设置的 outFile,如果没设置就默认生成 uno.css
所以我想着优化一下,让 outFile 可以支持例如 source/css/[dirname]/[name].css 的写法,或者直接是个函数
类似这样
{
outFile: info => `source/${info.dirname}/${info.name}.css`
}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 本身就支持多个输出文件功能,再加上几个单元测试没过,后面就不想搞了
最后在托尼老师的开源探店投了一稿:开源探店直播 项目搜集
评论区域将在可见后加载…