PurgeCSS中文文档网PurgeCSS中文文档网
首页
文档
API参考
GitHub
首页
文档
API参考
GitHub
  • PurgeCSS

    • 关于PurgeCSS
    • 快速开始
    • 配置
    • 命令行接口
    • 编程API
    • 安全列表
    • 提取器
  • 插件

    • PostCSS插件
    • Webpack插件
    • Gulp插件
    • Grunt插件
    • Gatsby插件
  • 指南

    • Vue
    • React
    • Next.js
    • Nuxt.js
    • Razzle
    • WordPress
    • Hugo
  • 比较
  • 常见问题

    • 如何与CSS模块一起使用
    • 如何与Ant Design一起使用

Hugo

Hugo 是最受欢迎的开源静态站点生成器之一。凭借其惊人的速度和灵活性,Hugo 让构建网站再次变得有趣。

可以通过 Hugo Pipes 资源处理在 Hugo 中使用 PurgeCSS。

工具准备

  1. 安装 Hugo
  2. 安装 Node.js

写入统计信息

在你的 config.toml 文件中,添加以下内容:

[build]
  [build.buildStats]
    enable = true

或者,如果使用 config.yaml 文件,添加:

build:
  buildStats:
    enable: true

这会告诉 Hugo 在项目根目录生成一个 hugo_stats.json 文件。它包含你的 *.html 模板中的所有标签、类和 ID。

你还应该将 hugo_stats.json 添加到 Hugo 的服务器监视器中:

[module]
  [module.hugoVersion]
    extended = false
    min      = "0.115.0"
  [[module.mounts]]
    source = "assets"
    target = "assets"
  [[module.mounts]]
    source = "hugo_stats.json"
    target = "assets/watching/hugo_stats.json"

Node 包

如果项目根目录还没有 package.json 文件(用于跟踪所有 Node 依赖),请从项目根目录运行以下命令创建:

npm init

你可以输入尽可能多或少的信息。创建文件后,可以继续安装包。

从项目根目录运行以下命令安装必要的包:

npm install postcss postcss-cli @fullhuman/postcss-purgecss --save

这些包将安装到 node_modules 文件夹中,并添加到你的 package.json 文件。

如果还没有,请将 node_modules/ 添加到 .gitignore 文件中。

PostCSS 配置文件

在项目根目录创建 postcss.config.js 文件,内容如下:

import { purgeCSSPlugin } from '@fullhuman/postcss-purgecss';

const purgecss = purgeCSSPlugin({
  content: ["./hugo_stats.json"],
  defaultExtractor: (content) => {
    const els = JSON.parse(content).htmlElements;
    return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])];
  },
  safelist: [],
});

export default {
  plugins: [
    ...(process.env.HUGO_ENVIRONMENT === "production" ? [purgecss] : []),
  ],
};

有关每个选项的详细信息,请参阅 PurgeCSS 配置文档。

注意: safelist 目前是一个空数组。请记住,只提取 HTML 模板中的元素。因此,如果 JS 添加了元素,你需要将它们添加到安全列表中。

HTML 模板

在 HTML 模板的 <head> 中添加:

{{ $css := resources.Get "css/style.css" | resources.PostCSS }} 
{{ if hugo.IsProduction }} 
    {{ $css = $css | minify | fingerprint | resources.PostProcess }} 
{{ end }}

<link
  rel="stylesheet"
  href="{{ $css.RelPermalink }}"
  {{ if hugo.IsProduction -}} 
    integrity="{{ $css.Data.Integrity }}"
  {{- end }}
/>

这假设:

  • 你的 CSS 文件位于 assets/css/style.css
  • 你希望压缩并为生产版本添加指纹

如果这些假设不适用于你,请相应地修改代码。

使用

很好,现在我们可以使用它了。

在开发模式下服务你的站点(默认):

hugo serve

打开浏览器开发者工具,转到网络选项卡,注意 CSS 文件的大小。

现在,按 Control + C 停止它,然后在生产模式下服务你的站点:

hugo serve --environment production

注意 CSS 文件现在的大小要小得多。

环境

如果你不想传递 --environment production 选项,可以设置此环境变量:

HUGO_ENVIRONMENT=production

参考资料

  • https://gohugo.io/hugo-pipes/postprocess/
Edit this page
Prev
WordPress