Prhub

#23516 [docs] add deprecation notice banner to legacy documentation site

原始 PR 作者 zijiexia 合并时间 2026-04-23 11:17 文件变更 4 提交数 1 评论 1 代码增减 +84 / -1

执行摘要

为旧版文档网站添加弃用通知横幅,引导用户至新站点。

根据PR body,动机是添加弃用通知横幅到旧版文档网站(https://sgl-project.github.io),并添加LEGACY_DOCS_ALLOWLIST以绕过pre-commit钩子,禁止修改docs/目录,便于维护。

对于文档维护者,此PR值得关注以了解如何集成弃用横幅到静态网站;对于工程师,可快速浏览CI脚本变更以理解允许列表机制,但无需深入阅读。

讨论亮点

Review中无实质技术讨论,仅有一个批准(wisclmy0611),表明变更被直接接受。

实现拆解

  1. 新增JavaScript横幅逻辑:创建文件docs/_static/js/deprecation_banner.js,定义buildNewDocsUrl函数构建新文档URL,addDeprecationBanner函数在页面顶部插入横幅元素。
  2. 更新Sphinx配置:修改docs/conf.py,在html_js_files中添加js/deprecation_banner.js,确保横幅脚本被加载。
  3. 添加CSS样式:修改docs/_static/css/custom_log.css,定义.sglang-docs-deprecation-banner类,设置横幅的背景、边框和链接样式。
  4. 调整CI脚本:修改scripts/ci/check_no_docs_changes.py,添加LEGACY_DOCS_ALLOWLIST允许列表,包含横幅相关文件,以绕过pre-commit检查。
文件 模块 状态 重要度
docs/_static/js/deprecation_banner.js 文档静态资源 added 7.28
docs/conf.py 文档配置 modified 4.35
scripts/ci/check_no_docs_changes.py CI 脚本 modified 4.0
docs/_static/css/custom_log.css 文档静态资源 modified 3.45

关键符号

buildNewDocsUrl addDeprecationBanner

关键源码片段

docs/_static/js/deprecation_banner.js core-logic

新增核心 JavaScript 逻辑,负责构建新文档 URL 和添加弃用横幅,是功能实现的关键。

(function () {
    "use strict";    var oldOrigin = "https://sgl-project.github.io";
    var newOrigin = "https://docs.sglang.io";    function buildNewDocsUrl() {
        var href = window.location.href;
        // 如果当前 URL 匹配旧版站点,则替换为新站点 URL
        if (href === oldOrigin || href.indexOf(oldOrigin + "/") === 0) {
            return href.replace(oldOrigin, newOrigin);
        }
        // 否则,基于路径构建新 URL
        return newOrigin + window.location.pathname + window.location.search + window.location.hash;
    }    function addDeprecationBanner() {
        // 避免重复添加横幅
        if (document.getElementById("sglang-docs-deprecation-banner")) {
            return;
        }        var link = document.createElement("a");
        link.href = buildNewDocsUrl(); // 设置链接到新文档站点
        link.textContent = link.href;        var banner = document.createElement("div");
        banner.id = "sglang-docs-deprecation-banner";
        banner.className = "sglang-docs-deprecation-banner";
        banner.setAttribute("role", "status");
        banner.setAttribute("aria-live", "polite");        var prefix = document.createTextNode(
            "This legacy documentation site will be deprecated soon. Please use the new SGLang documentation at "
        );
        var suffix = document.createTextNode(".");        banner.appendChild(prefix);
        banner.appendChild(link);
        banner.appendChild(suffix);        // 将横幅插入到页面顶部
        document.body.insertBefore(banner, document.body.firstChild);
    }    // 在 DOM 加载完成后添加横幅
    if (document.readyState === "loading") {
        document.addEventListener("DOMContentLoaded", addDeprecationBanner);
    } else {
        addDeprecationBanner();
    }
})();

评论区精华

无实质讨论 other

Review 中仅有一个空批准,无技术讨论。

结论:PR 被批准合并。 · 已解决

风险与影响

风险较低:横幅JavaScript使用标准语法,但可能存在旧浏览器兼容性问题;CSS样式可能与现有文档样式冲突;CI脚本变更可能意外影响其他文档文件的pre-commit检查。

影响用户:访问旧版文档网站的用户将看到弃用通知,引导至新站点,提升迁移意识;影响系统:文档网站前端添加了横幅元素,轻微改变外观和交互;影响团队:维护更方便,允许特定文件修改,减少维护阻碍。

前端兼容性 样式冲突 CI 脚本变更

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论