<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>升级 on OINK</title>
    <link>https://oink.pgsty.com/zh/categories/%E5%8D%87%E7%BA%A7/</link>
    <description>Recent content in 升级 on OINK</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    
    
    
      <lastBuildDate>Fri, 14 Aug 2026 21:56:46 +0800</lastBuildDate>
    
    
      <atom:link href="https://oink.pgsty.com/zh/categories/%E5%8D%87%E7%BA%A7/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>升级到 Oink 0.4.0</title>
        <link>https://oink.pgsty.com/zh/docs/upgrade/v0-4/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/zh/docs/upgrade/v0-4/</guid>
        <description>&lt;p&gt;Oink 0.4.0 是统一交付的场景组件版本。Reading &amp;amp;&#xA;Release、Landing 与 Book 最初按 0.4、0.5、0.6 三条路线设计，但全部随单一公开标签&#xA;&lt;code&gt;v0.4.0&lt;/code&gt; 发布。不要固定那些历史设计编号。&lt;/p&gt;&#xA;&lt;p&gt;普通 Docsy 兼容内容、既有首页数据与模块路径保持兼容。升级工作主要是检查新的默认外壳行为，并替换两个已移除的 ICP 专用页脚参数。&lt;/p&gt;&#xA;&lt;h2 id=&#34;pin-release&#34;&gt;1. 固定不可变版本&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pin-release&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;创建升级分支并更新 Hugo 模块：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-96f35053-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;sh&#34; data-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;BASH&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-96f35053-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo mod get github.com/pgsty/oink@v0.4.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo mod tidy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo mod graph &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep github.com/pgsty/oink&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;模块图必须解析到 &lt;code&gt;github.com/pgsty/oink@v0.4.0&lt;/code&gt;，而不是伪版本或 &lt;code&gt;main&lt;/code&gt;。Oink&#xA;0.4.0 要求 Hugo Extended&#xA;0.160.1 或更新版本，消费站仍然不需要 Node.js、PostCSS 或 CDN 流水线。&lt;/p&gt;&#xA;&lt;p&gt;通过同级 checkout 开发时，请记住 &lt;code&gt;go.work&lt;/code&gt;&#xA;会覆盖公开模块固定。把发布依赖判定为已验证前，应同时使用 &lt;code&gt;GOWORK=off&lt;/code&gt; 与&#xA;&lt;code&gt;HUGO_MODULE_WORKSPACE=off&lt;/code&gt; 单独验证公开标签。&lt;/p&gt;&#xA;&lt;h2 id=&#34;review-defaults&#34;&gt;2. 检查新的默认行为&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#review-defaults&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;pager&#34;&gt;顺序翻页&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pager&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;code&gt;docs&lt;/code&gt;、&lt;code&gt;book&lt;/code&gt; 与 &lt;code&gt;blog&lt;/code&gt;&#xA;现在默认带顺序翻页。文档和 Book 沿可见侧栏树前进，博客沿时间顺序前进。页面或分区刻意不属于任何序列时，可以退出：&lt;/p&gt;</description>
      </item>
    <item>
        <title>升级 Oink Hugo Module</title>
        <link>https://oink.pgsty.com/zh/docs/upgrade/upgrade/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/zh/docs/upgrade/upgrade/</guid>
        <description>&lt;h2 id=&#34;pin-a-version&#34;&gt;固定版本&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pin-a-version&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;生产站点应导入发布标签或不可变的 commit，绝不能跟随未固定版本的分支。在站点根目录，把 Oink 更新到指定 ref：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b10ffcc6-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;sh&#34; data-line-count=&#34;2&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;BASH&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-b10ffcc6-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo mod get github.com/pgsty/oink@TARGET_VERSION&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo mod tidy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;请把 &lt;code&gt;TARGET_VERSION&lt;/code&gt; 替换为发布注记指定的不可变标签，例如&#xA;&lt;code&gt;v0.4.1&lt;/code&gt;。生产升级策略不要使用未限定版本的模块路径或 &lt;code&gt;@latest&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;h2 id=&#34;test-a-local-checkout&#34;&gt;测试本地 checkout&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#test-a-local-checkout&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;如果要在不修改已提交模块版本的前提下测试本地 OINK checkout，请使用被忽略的 Go&#xA;workspace：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b10ffcc6-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;sh&#34; data-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;BASH&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-b10ffcc6-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;go work init .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;go work edit -replace&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;github.com/pgsty/oink&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/absolute/path/to/oink&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;HUGO_MODULE_WORKSPACE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;go.work&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo --gc --minify&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;不要把包含开发者机器专属绝对路径的 &lt;code&gt;go.work&lt;/code&gt; 提交到仓库。&lt;/p&gt;&#xA;&lt;h2 id=&#34;verify-the-resolved-module&#34;&gt;验证解析出的模块&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#verify-the-resolved-module&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;检查 Hugo 的依赖图：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b10ffcc6-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;sh&#34; data-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;BASH&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-b10ffcc6-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo mod graph&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;确认主题解析到预期的标签、commit 或本地 replacement。OINK 不需要运行&#xA;&lt;code&gt;hugo mod npm pack&lt;/code&gt; 或 &lt;code&gt;npm install&lt;/code&gt;，因为浏览器依赖已经随主题提供。&lt;/p&gt;</description>
      </item>
    <item>
        <title>迁移现有 Docsy 站点</title>
        <link>https://oink.pgsty.com/zh/docs/upgrade/from-docsy/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/zh/docs/upgrade/from-docsy/</guid>
        <description>&lt;p&gt;OINK 旨在替换各站点复制的公共外壳、运行时与短代码，而无需批量重写普通正文。安全迁移应按依赖关系删除覆盖项，把产品专用行为留在站点，并在修改生产环境前先验证临时副本。&lt;/p&gt;&#xA;&lt;h2 id=&#34;migration-principles&#34;&gt;迁移原则&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#migration-principles&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;固定目标实现，不要把生产站点迁移到未固定版本的分支。&lt;/li&gt;&#xA;&lt;li&gt;删除覆盖项之前先完成清点。&lt;/li&gt;&#xA;&lt;li&gt;删除公共主题副本，不删除站点业务逻辑。&lt;/li&gt;&#xA;&lt;li&gt;在 OINK API 兼容的地方，保持内容 URL、front matter 与短代码行为不变。&lt;/li&gt;&#xA;&lt;li&gt;unsafe 或在线例外必须显式声明，并且只在过渡期使用。&lt;/li&gt;&#xA;&lt;li&gt;分别测试构建产物、浏览器行为与托管站点行为。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;pin-the-target&#34;&gt;固定目标版本&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pin-the-target&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;请在 &lt;code&gt;go.mod&lt;/code&gt; 中固定已发布标签，或使用完整的版本化归档。预发布评估期间，Hugo&#xA;Module 站点可以使用被忽略的 Go&#xA;workspace，在不修改已提交模块版本的情况下解析本地 checkout：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-7d54faad-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;sh&#34; data-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;BASH&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-7d54faad-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;go work init .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;go work edit -replace&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;github.com/pgsty/oink&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/absolute/path/to/oink&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;HUGO_MODULE_WORKSPACE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;go.work&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo --gc --minify&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;站点的 &lt;code&gt;hugo.yaml&lt;/code&gt; 导入 &lt;code&gt;github.com/pgsty/oink&lt;/code&gt;；workspace 只替换本地 checkout。&lt;/p&gt;&#xA;&lt;h2 id=&#34;inventory-existing-overrides&#34;&gt;清点现有覆盖项&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#inventory-existing-overrides&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;把每个站点级文件归入以下四类之一：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;类别&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;处理方式&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;公共外壳的完全或近似副本&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;OINK 验证通过后删除&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;OINK 已提供的可复用组件&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;删除或机械重命名&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;范围明确的品牌或产品定制&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;保留，再缩小到最小 hook&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;业务专用数据或交互&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;留在站点&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;code&gt;layouts/&lt;/code&gt;、&lt;code&gt;assets/&lt;/code&gt;、&lt;code&gt;static/&lt;/code&gt;、配置与构建工作流必须一起检查。复制的短代码通常还伴随一份 JavaScript&#xA;bundle、样式表、vendor 文件和 CI 安装步骤。&lt;/p&gt;</description>
      </item>
    <item>
        <title>升级与迁移</title>
        <link>https://oink.pgsty.com/zh/docs/upgrade/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/zh/docs/upgrade/</guid>
        <description>&lt;h2 id=&#34;in-this-chapter&#34;&gt;本章内容&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#in-this-chapter&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://oink.pgsty.com/zh/docs/upgrade/v0-4/&#34;&gt;升级到 0.4.0&lt;/a&gt;：场景组件迁移与行为变化检查&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://oink.pgsty.com/zh/docs/upgrade/upgrade/&#34;&gt;升级 OINK&lt;/a&gt;：跨版本升级步骤与破坏性变更清单&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://oink.pgsty.com/zh/docs/upgrade/from-docsy/&#34;&gt;从 Docsy 迁移&lt;/a&gt;：把既有 Docsy 站点切换到 OINK&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;principles&#34;&gt;升级原则&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#principles&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;生产站点固定版本标签，不跟随 &lt;code&gt;main&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;升级前先读目标版本的破坏性变更&lt;/li&gt;&#xA;&lt;li&gt;在分支上升级并完整验证，再合并&lt;/li&gt;&#xA;&lt;li&gt;本地构建通过不等于可以发布——预览部署和线上冒烟是独立的门禁&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    
  </channel>
</rss>
