了解uno.config.ts文件的配置项---content

提取

UnoCSS 的工作原理是从代码库中搜索使用的样式类并按需生成相应的 CSS。我们称这个过程为提取

content 配置项

content 是 UnoCSS 配置中的一个重要部分,用于定义哪些文件的内容需要被解析。它通常用于支持按需生成 CSS 规则,确保只生成实际用到的样式,从而优化最终的 CSS 文件大小。

pipeline ****配置

pipelinecontent 的子配置项,用于定义内容解析的管道(pipeline)。它包含两个主要部分:

  • include:指定哪些文件路径或模式需要被解析。
  • exclude:指定哪些文件路径或模式需要被排除(在这段代码中未使用)。
javascript 复制代码
// uno.config.ts
export default defineConfig({
  content: {
    pipeline: {
      include: [
        // the default
        /.(vue|svelte|[jt]sx|mdx?|astro|elm|php|phtml|html)($|?)/,
        // include js/ts files
        'src/**/*.{js,ts}',
      ],
      // exclude files
      // exclude: []
    },
  },
})
css 复制代码
 /.(vue|svelte|[jt]sx|mdx?|astro|elm|php|phtml|html)($|?)/

这是一个正则表达式,用于匹配以下文件类型:

  • .vue(Vue 组件文件)
  • .svelte(Svelte 组件文件)
  • .jsx.tsx(React 组件文件,支持 TypeScript)
  • .mdx.md(Markdown 文件,支持 MDX 格式)
  • .astro(Astro 组件文件)
  • .elm(Elm 语言文件)
  • .php(PHP 文件)
  • .phtml(PHP 模板文件)
  • .html(HTML 文件)

这个正则表达式匹配这些文件扩展名的文件,并且允许文件路径以 ? 结尾(例如,用于某些特殊查询参数的场景)。

css 复制代码
'src/**/*.{js,ts}'

通过这种配置,UnoCSS 可以扫描这些文件的内容,提取其中使用的 UnoCSS 类名,并生成对应的 CSS 规则。这有助于实现按需加载样式,减少生成的 CSS 文件大小,同时确保只包含实际用到的样式。

可以在希望 UnoCSS 扫描的文件中的任何位置添加 @unocss-include 魔术注释(基于每个文件)。如果需要扫描 *.js or *.ts 文件,也是这样配置。

使用 @unocss-include 魔术注释

1. 在文件中添加注释

在需要 UnoCSS 扫描的文件顶部添加以下注释:

arduino 复制代码
// @unocss-include

这个注释会告诉 UnoCSS,即使该文件没有被默认的解析规则匹配到,也需要扫描该文件以提取 UnoCSS 类名。

同样,您还可以添加 @unocss-ignore 来绕过整个文件的扫描和转换。

如果您希望 UnoCSS 跳过一段代码,不从中提取任何内容,您可以成对使用 @unocss-skip-start @unocss-skip-end 。注意,必须成对使用才有效。

xml 复制代码
<p class="text-green text-xl">
  Green Large
</p>

<!-- @unocss-skip-start -->
<!-- `text-red` will not be extracted -->
<p class="text-red">
  Red
</p>
<!-- @unocss-skip-end -->

从文件系统中提取

如果您使用的集成无法访问构建工具管道(例如,PostCSS 插件),或者您正在与后端框架集成,这样代码就不会通过 pipeline ,您可以手动指定要提取的文件。

less 复制代码
// uno.config.ts
export default defineConfig({
  content: {
    filesystem: [
      'src/**/*.php',
      'public/*.html',
    ],
  },
})

从行内文本中提取

inlinecontent 的子配置项,用于定义直接提供的内联内容。它支持以下两种类型的内容:

  • 直接提供的 HTML 字符串:可以直接写在配置文件中。
  • 异步函数:可以通过异步函数动态获取内容,例如从网络请求中获取 HTML 内容。
arduino 复制代码
export default defineConfig({
  content: {
    inline: [
      // plain text
      '<div class="p-4 text-red">Some text</div>',
      // async getter
      async () => {
        const response = await fetch('https://example.com');
        return response.text();
      },
    ],
  },
});
css 复制代码
'<div class="p-4 text-red">Some text</div>',
  • 这是一个直接提供的 HTML 字符串。
  • UnoCSS 会解析这段 HTML,提取其中的类名(如 p-4text-red),并生成对应的 CSS 规则。

异步函数

vbnet 复制代码
async () => {
  const response = await fetch('https://example.com');
  return response.text();
},
  • 这是一个异步函数,用于动态获取内容。
  • 在这个例子中,函数通过 fetch 请求从 https://example.com 获取内容。
  • fetch 请求返回一个 Response 对象,调用 response.text() 方法可以获取 HTML 内容。
  • UnoCSS 会解析返回的 HTML 内容,提取其中的类名,并生成对应的 CSS 规则。
相关推荐
开开心心_Every1 分钟前
安卓后台录像APP:息屏录存片段,行车用
java·服务器·前端·学习·eclipse·edge·powerpoint
狗头大军之江苏分军3 分钟前
Ant Design 6.0 正式发布:从 V5 到 V6 有哪些变化?
前端
优弧10 分钟前
Claude 终于对普通人下手了!Cowork 发布,你的最强 AI 打工搭子来了!
前端·后端
Zoey的笔记本33 分钟前
敏捷与稳定并行:Scrum看板+BPM工具选型指南
大数据·前端·数据库·python·低代码
文心快码BaiduComate35 分钟前
0代码手写!体验百度Comate的“魔法”:我造了个会理解情绪的中介层
前端·程序员·前端框架
38242782742 分钟前
表单提交验证:onsubmit与return详解
前端·javascript·html
前端小蜗43 分钟前
普通前端程序员的 2025:没什么大胜利,但也没被生活击倒
前端
bug总结1 小时前
身份证号脱敏的正确实现
前端·javascript·vue.js
林太白1 小时前
Vite8 Beta来了,Rolldown携手Oxc
前端·javascript·后端
xkxnq1 小时前
第二阶段:Vue 组件化开发(第 19天)
前端·javascript·vue.js