Skip to content

Commit 128671c

Browse files
author
Chenran Jin
committed
updated script
1 parent 090224a commit 128671c

File tree

8 files changed

+464
-0
lines changed

8 files changed

+464
-0
lines changed

GITHUB_PAGES_SETUP.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# 发布到 GitHub Pages 指南
2+
3+
## 快速开始
4+
5+
### 方法 1:使用 Windows 脚本(推荐)
6+
7+
直接运行:
8+
```
9+
bin\publish-to-github-pages.bat
10+
```
11+
12+
### 方法 2:使用 Bash 脚本(Git Bash / WSL)
13+
14+
```bash
15+
chmod +x bin/publish-to-github-pages
16+
./bin/publish-to-github-pages
17+
```
18+
19+
## 首次设置
20+
21+
### 1. 确保 GitHub Pages 已启用
22+
23+
1. 打开你的 GitHub 仓库设置
24+
2. 进入 **Settings****Pages**
25+
3.**Source** 下选择:
26+
- Branch: `gh-pages`
27+
- Folder: `/docs``/ (root)`
28+
4. 点击 **Save**
29+
30+
### 2. 调整 hosting-base-path
31+
32+
在脚本中找到这一行:
33+
```bash
34+
--hosting-base-path the-swift-programming-language-in-chinese-1
35+
```
36+
37+
改为你的**仓库名称**(如果仓库名不同的话)。
38+
39+
### 3. 第一次运行
40+
41+
脚本会自动:
42+
1. 创建 `gh-pages` 分支(如果不存在)
43+
2. 使用 `--experimental-enable-custom-templates` 构建文档
44+
3. 将构建结果复制到 `gh-pages` 分支的 `docs` 目录
45+
4. 提交并推送到 GitHub
46+
47+
## 访问你的文档
48+
49+
发布成功后,访问:
50+
```
51+
https://你的用户名.github.io/the-swift-programming-language-in-chinese-1/docs/documentation/the-swift-programming-language
52+
```
53+
54+
## 关键差异说明
55+
56+
相比原版脚本的修改:
57+
-`TSPL.docc``swift-6.docc`(中文版目录)
58+
- ✅ 添加 `--experimental-enable-custom-templates`(启用 header/footer)
59+
- ✅ 移除了 redirects 复制(如果你不需要)
60+
- ✅ 调整了 `--hosting-base-path` 为你的仓库名
61+
62+
## 本地预览(推荐先测试)
63+
64+
发布前建议先本地预览:
65+
```bash
66+
# 使用之前创建的预览脚本
67+
preview-with-header-footer.bat
68+
```
69+
70+
或手动:
71+
```bash
72+
docc preview swift-6.docc --experimental-enable-custom-templates
73+
```
74+
75+
## 故障排除
76+
77+
### 问题:没有看到 header 和 footer
78+
**解决**:确保构建命令包含 `--experimental-enable-custom-templates`
79+
80+
### 问题:页面 404
81+
**解决**
82+
1. 检查 GitHub Pages 设置中的分支和文件夹
83+
2. 确认 `--hosting-base-path` 与仓库名匹配
84+
3. 等待几分钟让 GitHub Pages 部署
85+
86+
### 问题:样式不正确
87+
**解决**:检查 `swift-6.docc/header.html``footer.html` 中的资源路径
88+
89+
## 自动化部署(可选)
90+
91+
可以设置 GitHub Actions 自动发布。需要时可以参考官方仓库的 workflow 配置。

bin/publish-to-github-pages

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#! /bin/bash
2+
3+
# Swift 中文版文档发布脚本 - 发布到 GitHub Pages
4+
# 基于 swiftlang/swift-book 的 update-book-preview 脚本修改
5+
6+
set -eux
7+
8+
REMOTE=${1:-origin}
9+
CURRENT_COMMIT_HASH="$(git rev-parse --short HEAD)"
10+
11+
# 进入仓库根目录
12+
cd "$(git rev-parse --show-toplevel)"
13+
14+
# 检出 gh-pages 分支到子目录
15+
git worktree add --checkout gh-pages "$REMOTE"/gh-pages
16+
17+
# 美化 DocC JSON 输出,便于对比和版本控制
18+
export DOCC_JSON_PRETTYPRINT="YES"
19+
20+
# 使用 header.html(如果需要不同版本可以先复制)
21+
# cp -n swift-6.docc/header-publish.html swift-6.docc/header.html
22+
23+
# 构建文档,输出到 gh-pages/docs 子目录
24+
xcrun docc convert \
25+
--experimental-enable-custom-templates \
26+
--hosting-base-path the-swift-programming-language-in-chinese-1 \
27+
--output-path "./gh-pages/docs" \
28+
swift-6.docc
29+
30+
# 如果复制了临时 header,清理掉
31+
# rm swift-6.docc/header.html
32+
33+
# 提交并推送更改到 gh-pages 分支
34+
pushd gh-pages
35+
git add docs
36+
37+
if [[ -n "$(git status --porcelain)" ]]
38+
then
39+
echo "发现文档更新。"
40+
echo "正在提交更改到 'gh-pages' 分支并推送到 $REMOTE"
41+
git commit -m "更新 GitHub Pages 文档站点到提交 '$CURRENT_COMMIT_HASH'"
42+
echo
43+
git push "$REMOTE" HEAD:gh-pages
44+
else
45+
echo "没有发现文档更改。"
46+
fi
47+
48+
popd
49+
50+
git worktree remove gh-pages
51+
52+
echo "发布完成!"
53+
echo "GitHub Pages 地址应该是:"
54+
echo "https://你的用户名.github.io/the-swift-programming-language-in-chinese-1/"

bin/publish-to-github-pages.bat

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
@echo off
2+
REM Swift 中文版文档发布脚本 - Windows 版本
3+
REM 发布到 GitHub Pages
4+
5+
echo 正在发布中文版 Swift 文档到 GitHub Pages...
6+
echo.
7+
8+
REM 获取当前提交哈希
9+
for /f "delims=" %%i in ('git rev-parse --short HEAD') do set COMMIT_HASH=%%i
10+
11+
REM 检查 gh-pages 分支是否存在
12+
git show-ref --verify --quiet refs/heads/gh-pages
13+
if %errorlevel% neq 0 (
14+
echo gh-pages 分支不存在,正在创建...
15+
git checkout --orphan gh-pages
16+
git rm -rf .
17+
echo # GitHub Pages for Swift Chinese Documentation > README.md
18+
git add README.md
19+
git commit -m "Initialize gh-pages branch"
20+
git push -u origin gh-pages
21+
git checkout main
22+
echo gh-pages 分支已创建!
23+
)
24+
25+
REM 创建临时输出目录
26+
set TEMP_OUTPUT=gh-pages-temp
27+
if exist %TEMP_OUTPUT% rmdir /s /q %TEMP_OUTPUT%
28+
mkdir %TEMP_OUTPUT%
29+
30+
REM 构建文档
31+
echo 正在构建文档...
32+
xcrun docc convert ^
33+
--experimental-enable-custom-templates ^
34+
--hosting-base-path the-swift-programming-language-in-chinese-1 ^
35+
--output-path "%TEMP_OUTPUT%" ^
36+
swift-6.docc
37+
38+
if %errorlevel% neq 0 (
39+
echo 构建失败!
40+
pause
41+
exit /b 1
42+
)
43+
44+
REM 切换到 gh-pages 分支
45+
echo 正在切换到 gh-pages 分支...
46+
git checkout gh-pages
47+
48+
REM 清空 docs 目录并复制新文件
49+
if exist docs rmdir /s /q docs
50+
mkdir docs
51+
xcopy /E /I /Y "%TEMP_OUTPUT%" docs
52+
53+
REM 提交更改
54+
git add docs
55+
git diff-index --quiet HEAD --
56+
if %errorlevel% neq 0 (
57+
echo 发现文档更新,正在提交...
58+
git commit -m "更新 GitHub Pages 文档站点到提交 %COMMIT_HASH%"
59+
git push origin gh-pages
60+
echo 发布成功!
61+
) else (
62+
echo 没有发现文档更改。
63+
)
64+
65+
REM 切回主分支
66+
git checkout main
67+
68+
REM 清理临时文件
69+
rmdir /s /q %TEMP_OUTPUT%
70+
71+
echo.
72+
echo 完成!GitHub Pages 地址:
73+
echo https://你的用户名.github.io/the-swift-programming-language-in-chinese-1/docs/documentation/the-swift-programming-language
74+
echo.
75+
pause

build-with-header-footer.bat

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
@echo off
2+
REM 构建带 header 和 footer 的中文版 Swift 文档
3+
4+
REM 设置输出目录
5+
set OUTPUT_DIR=swift-book-cn
6+
7+
REM 进入项目根目录
8+
cd /d "%~dp0"
9+
10+
REM 确保使用正确的 header 文件(如果需要不同的版本可以修改)
11+
REM copy /Y swift-6.docc\header-publish.html swift-6.docc\header.html
12+
13+
REM 使用 DocC 构建文档,启用自定义模板支持
14+
xcrun docc convert ^
15+
--experimental-enable-custom-templates ^
16+
--hosting-base-path swift-book ^
17+
--output-path "%OUTPUT_DIR%" ^
18+
swift-6.docc
19+
20+
echo.
21+
echo 构建完成!输出目录:%OUTPUT_DIR%
22+
echo 可以使用 docc preview 预览或直接在浏览器中打开
23+
pause

preview-with-header-footer.bat

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
@echo off
2+
REM 预览带 header 和 footer 的中文版 Swift 文档
3+
4+
REM 进入项目根目录
5+
cd /d "%~dp0"
6+
7+
echo 正在启动 DocC 预览服务器(带 header 和 footer)...
8+
echo 注意:必须使用 --experimental-enable-custom-templates 参数
9+
echo.
10+
11+
REM 使用 DocC 预览,启用自定义模板支持
12+
xcrun docc preview swift-6.docc ^
13+
--experimental-enable-custom-templates
14+
15+
REM 如果 xcrun 不可用,尝试直接使用 docc
16+
REM docc preview swift-6.docc --experimental-enable-custom-templates

0 commit comments

Comments
 (0)