💥 升级到 FixIt V1

目录

本指南将引导你从 FixIt v0.x 升级到 v1.0。v1 版本引入了重大的破坏性更新,涉及配置结构、自定义资源等方面。请仔细阅读以确保顺利升级。

前置要求

在升级之前,请确保你的环境满足以下要求:

要求最低版本
Hugo0.161.0 (Extended)
Dart Sass1.99.0
Node.js22
FixItv1.0.0

注意

Dart Sass 需要单独安装,如果未安装会在构建时报错。

配置键命名:camelCase 改为 snake_case

v1 中影响最大的变化是 [params] 下的所有配置键已从 camelCase 重命名为 snake_case。Hugo 自身的配置键(如 [menu][markup] 等)不受影响。

hugo.toml
1
2
3
4
[params]
defaultTheme = "auto"
dateFormat = "2006-01-02"
enablePWA = true

弃用检测

主题内置了弃用检测系统。当你使用旧的 camelCase 键构建站点时,Hugo 会发出警告:

1
2
[FixIt] deprecation warnings (v1.0.0):
- params.defaultTheme is deprecated, use params.default_theme instead

这些警告会直接指向新的键名,使迁移变得简单明了。

常用顶层键重命名

旧(v0.x)新(v1)
defaultThemedefault_theme
dateFormatdate_format
withSiteTitlewith_site_title
disableThemeInjectdisable_theme_inject
titleDelimitertitle_delimiter
indexWithSubtitleindex_with_subtitle
enableTranslationMergeenable_translation_merge
capitalizeTitlescapitalize_titles
summaryPlainifysummary_plainify
tagCloudtag_cloud
postChatpost_chat
postSummarypost_summary
gitInfogit_info
backToTopback_to_top
readingProgressreading_progress
githubCornergithub_corner
recentlyUpdatedrecently_updated
jsonViewerjson_viewer
customPartialscustom_partials
taskListtask_list
repoVersionrepo_version

嵌套键重命名

子节同样遵循 snake_case 命名规范。例如:

hugo.toml
1
2
3
4
5
6
7
[params.search]
contentLength = 200
absoluteUrl = true

[params.search.algolia]
appId = "xxx"
searchKey = "xxx"

其他常见的嵌套节变更:

旧键名新键名
[params.header]desktopMode, mobileModedesktop_mode, mobile_mode
[params.footer]siteTimesite_time
[params.footer.powered]hugoLogo, themeLogohugo_logo, theme_logo
[params.home.profile]avatarUrl, gravatarEmail, avatarMenu, onlyFirstPageavatar_url, gravatar_email, avatar_menu, only_first_page
[params.home.posts]imagePreviewimage_preview
[params.breadcrumb]showHomeshow_home
[params.navigation]inSectionin_section
[params.watermark]rowSpacing, colSpacing, fontSize, fontFamilyrow_spacing, col_spacing, font_size, font_family
[params.busuanzi]siteViews, pageViewssite_views, page_views
[params.mermaid]securityLevel, fontFamily, layoutLoaderssecurity_level, font_family, layout_loaders
[params.math.katex]copyTex, throwOnError, errorColorcopy_tex, throw_on_error, error_color
[params.math.mathjax.options]enableMenu, skipHtmlTags, ignoreHtmlClassenable_menu, skip_html_tags, ignore_html_class

配置结构:[params.page] 已移除

整个 [params.page] 节已被扁平化到 [params]。所有之前嵌套在 [params.page] 下的页面级参数现在直接位于 [params] 下。它们仍然可以通过 front matter 在每篇文章中单独覆盖。

hugo.toml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[params.page]
lightgallery = true
wordCount = true
readingTime = true

[params.page.toc]
enable = true

[params.page.comment]
# ...

页面级键迁移

旧([params.page]新([params]
authorAvatarauthor_avatar
hiddenFromHomePagehidden_from_home_page
hiddenFromSearchhidden_from_search
hiddenFromRelatedhidden_from_related
hiddenFromFeedhidden_from_feed
twemojitwemoji
lightgallerylightgallery
rubyruby
fractionfraction
fontawesomefontawesome
licenselicense
pageStylepage_style
autoBookmarkauto_bookmark
showLastmodshow_lastmod
wordCountword_count
readingTimereading_time
endFlagend_flag
instantPageinstant_page
collectionListcollection_list
collectionNavigationcollection_navigation
editUrledit_url
sourceUrlsource_url

子节提升至 [params] 层级

旧(v0.x)新(v1)
[params.page.toc][params.toc]
[params.page.expirationReminder][params.expiration_reminder]
[params.page.heading][params.heading]
[params.page.math][params.math]
[params.page.mapbox][params.mapbox]
[params.page.reward][params.reward]
[params.page.share][params.share]
[params.page.comment][params.comment]
[params.page.library][params.library]
[params.page.seo][params.seo]
旧(v0.x [params.page]新(v1 [params.post_link]
linkToMarkdownmarkdown
linkToSourcesource
linkToEditedit
linkToReportreport
linkToVscodeeditor(字符串,默认 "vscode"

PWA 配置重构

旧(v0.x)新(v1)
[params] enablePWA[params.app] pwa
[params.app] title[params.app] name
[params.app] noFavicon[params.app] no_favicon
[params.app] svgFavicon[params.app] svg_favicon
[params.app] iconColor[params.app] mask_color
[params.app] tileColor[params.app] tile_color
[params.app.themeColor][params.app.theme_color]

其他结构性变更

  • params.externalIcon 已移至 [params.link] external_icon(现在默认为 true
  • [params.link] 现在是页面级节(可通过 front matter 在每篇文章中覆盖)
  • [params.image][params.codeblock][params.json_viewer][params.filetree] 现在是页面级节

自定义样式和脚本

自定义资源文件路径已变更,旧路径不再自动加载。

旧文件新文件
assets/css/_custom.scssassets/scss/custom.scss
assets/css/_override.scss已移除 — 使用 [params.appearance] 代替
assets/css/_variables.scssassets/scss/_variables.scss
assets/js/_custom.jsassets/js/custom.tsassets/js/custom.js

提示

主题附带了示例文件(assets/scss/custom.scss.exampleassets/js/custom.ts.example),展示了新的使用模式。请参考这些文件获取指导。

SCSS 架构变更

SCSS 架构已重构为按布局分包的结构,位于 assets/scss/ 下:

  • assets/scss/core/ — 核心样式(布局、maps、mixins)
  • assets/scss/pages/ — 按页面类型的样式
  • assets/scss/widgets/ — 组件样式

SCSS 函数前缀已从 fixit- 更改为 fi-。如果你在自定义样式中使用了主题的 SCSS 函数或 mixin,请相应更新引用。

新的 custom.scss 使用 @use 代替 @import

assets/scss/custom.scss
1
@use "core/mixins" as *;

[params.appearance] — 配置驱动的样式定制

新的 [params.appearance] 节允许你直接在 Hugo 配置中自定义 SCSS 变量,取代了旧的 assets/css/_override.scss 方式。

hugo.toml
1
2
3
4
5
[params.appearance]
global_font_family = "Custom Font, sans-serif"
global_background_color = "#ffffff"
global_background_color_dark = "#1a1a1a"
code_font_family = "Fira Code, monospace"

每个变量都支持亮色和暗色模式变体,使用 _dark 后缀。这涵盖了整个主题的颜色、字体、尺寸等设置。完整的可用变量列表请参见默认的 hugo.toml

Front Matter 变更

旧(v0.x)新(v1)
link_guard: truelink.guard: true(嵌套 map)

subtitlefeatured_imagefeatured_image_previewrepostweightmessage 字段现在是仅限 front matter 的参数(不再在 hugo.toml 中配置)。

内容加密

如果你使用了内容加密功能,该系统已被完全重写:

  • 移除了旧的 Base64 混淆层
  • 新的独立包 @hugo-fixit/encrypt,使用 AES-256-GCM 加密
  • 移除了内置的 crypto-jsxxhash-wasm 依赖

在 v1 中使用加密功能,需要将加密命令添加到构建流程中:

1
npx @hugo-fixit/encrypt

布局 Partials 路径变更

如果你在自定义代码中引用了主题 partials,请更新路径:

旧路径新路径
layouts/_partials/layouts/layouts/_partials/base/

例如,layouts/_partials/layouts/header.html 现在是 layouts/_partials/base/header.html

Hugo 配置更新

  • 站点配置中的 languageCode 已弃用;请使用 locale(Hugo v0.158.0+)
  • .Language.LanguageName 已弃用;请使用 .Language.Label(Hugo v0.158.0+)
  • [params.dev].debug 已移除;调试模式现在根据 Hugo 环境自动检测

快速升级清单

  • 更新 Hugo 到 >= 0.161.0(Extended 版本)
  • 安装 Dart Sass >= 1.99.0
  • 更新 FixIt 主题及相关主题组件到最新版本
  • 将所有 camelCase 配置键重命名为 snake_case
  • 扁平化 [params.page] — 将所有键和子节提升到 [params]
  • linkTo* 参数合并到 [params.post_link]
  • enablePWA 移至 [params.app].pwa 并重构 [params.app]
  • externalIcon 移至 [params.link].external_icon
  • assets/css/_custom.scss 移至 assets/scss/custom.scss
  • [params.appearance] 配置替代 assets/css/_override.scss
  • assets/css/_variables.scss 移至 assets/scss/_variables.scss
  • assets/js/_custom.js 移至 assets/js/custom.tsassets/js/custom.js
  • 更新 front matter:link_guard 改为 link.guard
  • 更新自定义 partials 路径:layouts/_partials/layouts/ 改为 layouts/_partials/base/
  • 如果使用加密功能:在构建流程中添加 npx @hugo-fixit/encrypt
  • 在语言配置中将 languageCode 更新为 locale

提示

弃用检测系统将指导你完成大部分变更。构建你的站点并查看 Hugo 警告以获取具体的迁移提示。

如果在升级过程中遇到问题,欢迎在 GitHub Discussions 中寻求帮助。


相关内容

Buy me a coffee
Lruihao 支付宝支付宝
Lruihao 微信微信

发现新版本

当前站点有新版本可用。