了解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 规则。
相关推荐
佳腾_11 分钟前
【Web应用服务器_Tomcat】三、Tomcat 性能优化与监控诊断
前端·中间件·性能优化·tomcat·web应用服务器
brzhang15 分钟前
告别 CURD,走向架构:一份帮你打通任督二脉的知识地图
前端·后端·架构
Moment22 分钟前
在 React 里面实现国际化实现是太简单了 🙂‍↔️🙂‍↔️🙂‍↔️
前端·javascript·react.js
兜小糖的小秃毛24 分钟前
el-Input输入数字自动转千分位进行展示
前端·javascript·vue.js
兜小糖的小秃毛24 分钟前
文号验证-同时对两个输入框验证
开发语言·前端·javascript
brzhang25 分钟前
代码越写越乱?掌握这 5 种架构模式,小白也能搭出清晰系统!
前端·后端·架构
J总裁的小芒果32 分钟前
el-table 自定义列、自定义数据
前端·javascript·vue.js
晚风予星33 分钟前
简记|React+Antd中实现 tooltip、ellipsis、copyable功能组件
前端·react.js
brzhang40 分钟前
告别『上线裸奔』!一文带你配齐生产级 Web 应用的 10 大核心组件
前端·后端·架构
程序员Bears40 分钟前
深入理解CSS3:Flex/Grid布局、动画与媒体查询实战指南
前端·css3·媒体·visual studio code