Jekyll 依赖管理:正确修改 Gemfile 并避免构建错误

jekyll-update-gemfile-guide

当你在维护 Jekyll 项目时,修改 Gemfile 后却忘记更新 Gemfile.lock,很容易导致构建失败(特别是在 GitHub Actions、Cloudflare Pages 等 CI/CD 环境)。本文总结了常见问题、正确做法和命令技巧,帮你避免踩坑。


1. 基础概念


文件名 作用说明
Gemfile 声明你项目需要哪些 Ruby gems(插件)
Gemfile.lock 锁定 gem 的具体版本,确保不同环境下依赖一致
Bundler 管理上述两个文件、安装和更新依赖的工具

2. 问题信息


你删除了某个插件(如 jekyll-jupyter-notebook)后,仅更新了 Gemfile,没改 Gemfile.lock,结果在 CI 构建时报错:Some dependencies were deleted from your gemfile, but the lockfile can't be updated because frozen mode is set,CI 环境默认开启 frozen 模式,禁止自动更新 Gemfile.lock,以避免依赖变更带来的不确定性。


3. 正确修改依赖的流程


修改 Gemfile

# 删除或注释掉不需要的插件
# gem "jekyll-jupyter-notebook"

允许更新锁文件

bundle config set frozen false

更新依赖并重生成 Gemfile.lock

bundle install

提交改动


4. 快速命令汇总(复制即用)


cd /your/jekyll/project/path

bundle config set frozen false
bundle install

git add Gemfile Gemfile.lock
git commit -m "Update dependencies"
git push