压缩Jekyll 的最终 HTML文件
文章目录
站点资源压缩有助于减少站点负载并加快浏览器加载时间。就像 CSS 和 JavaScript 一样,可以通过删除空格、新行、注释甚至删除某些可选的结束标签来压缩和压缩 HTML 输出,从而压缩文件大小。
流行的静态站点生成器,Hugo 版本 0.47 引入了 –minify 标志命令,该命令通过简单地运行 hugo –minify 来将最终的 HTML 输出压缩到 /public。在这里,我们将使用 Taco de Wolff 用 Go 语言编写的相同依赖项 Minify。与其他压缩工具相比,它的速度非常快(取决于您的网站权重)。
下面我编写了简单的程序来在使用 Jekyll 等静态网站生成器在本地生成 HTML 页面后压缩它们。
用Jekyll 搭建网站
首先使用以下命令行构建 Jekyll 最终生产站点:
JEKYLL_ENV=production bundle exec jekyll build --profile --trace
安装压缩
Ubuntu 上的 Deb 包
sudo apt-get update && sudo apt-get -y install minify
在 MacOS 上使用 Homebrew
brew install tdewolff/tap/minify
压缩 HTML 文件
minify --type=html --recursive --output "./" --match=.html --html-keep-conditional-comments --html-keep-default-attrvals --html-keep-document-tags --html-keep-end-tags --html-keep-quotes "./_site/" --verbose
压缩 XML 文件
您还可以使用以下命令行压缩 *.XML 文件:
minify --type=xml --recursive --output "./" --match=\.xml --xml-keep-whitespace "./_site/" --verbose || true
压缩 JSON 文件
您还可以使用以下命令行压缩 *.json 文件:
minify --type=json --recursive --output "./" --match=\.json "./_site/" --verbose || true
使用 GitHub Actions 构建、压缩和部署 Jekyll 站点到 GitHub Pages
如果您已在 GitHub Pages 中托管您的网站,则可以创建一个工作流以进行持续集成。
GitHub Actions 通过使用目录路径 .github/workflows 中的 YAML 文件为存储库注册(注意开头的点)。
使用 GitHub 界面或通过手动将 YAML 文件推送到工作流目录路径来创建一个工作流文件,例如 workflow.yml。
基本内容是:
name: My workflow
on:
push:
branches:
- main
env:
RUBY_VERSION: 2.7
jobs:
deploy:
name: gh-pages
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ env.RUBY_VERSION }} # Not needed with a .ruby-version file
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: Building site
run: JEKYLL_ENV=production bundle exec jekyll build --profile --trace
# - name: Install Minify deb package on Ubuntu
# if: matrix.os == 'ubuntu-latest'
# run: apt-get update && apt-get install --no-install-recommends --yes minify
# https://github.com/tdewolff/homebrew-tap/
- name: Install Minify using Homebrew
run: brew install tdewolff/tap/minify
# https://github.com/tdewolff/minify/tree/master/cmd/minify#usage
- name: Minify HTML files
run: |
minify --type=html --recursive --output "./" --match=\.html "./_site/" \
--html-keep-conditional-comments \
--html-keep-default-attrvals \
--html-keep-document-tags \
--html-keep-end-tags \
--html-keep-quotes \
--verbose
- name: Minify JSON files
run: |
minify --type=json --recursive --output "./" --match=\.json "./_site/" --verbose || true
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
if: success()
with:
allow_empty_commit: false
cname: yoursite.com.np
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_branch: gh-pages
publish_dir: ./_site/
经过大量研究和测试,我发现这是为您的站点压缩 Jekyll 输出 HTML 文件的最佳和最快的方法。
还可以找到另一种替代方案,即压缩 HTML 的 Jekyll 布局,它是用纯 Liquid 编写的。但请注意,我不建议使用它,因为它会减慢您的 Jekyll 构建时间,并且很长时间没有更新。