不知道是網絡問題還是官網問題,StarRocks文檔經常出現卡頓的情況,曾經構建過Flink文檔, 所以也想嘗試自己構建一個StarRocks的本地官方文檔
斷斷續續折騰了好幾天,就不廢話了,直接上實際步驟
1. 環境
1.1 Linux環境 (虛擬機或者wsl都可以,我用的wsl,不要使用cygwin,路徑轉換有問題)
1.2 nvm、npm、yarn
nvm安裝和管理nodejs
2. 直接開始
2.1 git clone doc-build (構建StarRocks文檔官方項目)
git clone https://github.com/StarRocks/doc-build.git
2.2 README.md 中有明確的步驟
yarn install --frozen-lockfile
git clone https://gitcode.com/GitHub_Trending/st/starrocks.git temp # 原地址為github,不推薦,建議替換為gitee官方倉庫地址加速下載
npm run copy
export DOCUSAURUS_IGNORE_SSG_WARNINGS=true
export NODE_OPTIONS="--max-old-space-size=12192"
yarn clear && yarn build && yarn serve # build 為實際構建靜態文檔命令,serve 為開啟本地web服務
# 在Linux上構建完后可復制構建好的 build 文件夾到任意位置,并在當前位置使用 python -m http.server [port] 開啟本地web服務
可以開啟兩個窗口 同時執行 yarn install 和 git clone
2.3 執行npm run copy
前的幾個文件修改(可忽略)
本博客構建的文檔版本 3.5 3.1 2.5 的中文和英文 文檔
- doc-build/versions.json 只保留需要的版本
["3.5","3.1","2.5"
]
- doc-build/docusaurus.config.js 中需修改的幾個位置
i18n: {defaultLocale: 'en', # 不建議修改為zh,否則搜索跳轉功能頁面url可能不對,別問我怎么知道的 。。。locales: ['en', 'zh'], # 只保留中英文localeConfigs: {en: {htmlLang: 'en-US',},zh: {htmlLang: 'zh-CN',},},},onlyIncludeVersions: (() => {if (isVersioningDisabled) {return ['current'];} else if (isBuildFast){return [...versions.slice(0, 1)];} else {return ['3.5', '3.1', '2.5']; # 只保留需要的版本}})(),versions: (() => {if (isVersioningDisabled) {return { current: { label: 'current' } };} else {return { # 只保留需要的版本'3.5': { label: 'Latest-3.5', banner: 'none' },'3.1': { label: '3.1', banner: 'none' },'2.5': { label: '2.5', banner: 'none' },};}})(),},
- doc-build/src/versions.json 只保留需要的版本(
不要刪除 main !!!
)
[{"branch": "main"},{"branch": "3.5"},{"branch": "3.1"},{"branch": "2.5"}
]
- doc-build/src/locales.json
[{"id": "zh-cn","sourceDir": "docs/zh"},{ # 英文文檔還是建議保留的,刪除用不上的日文文檔"id": "en-us","sourceDir": "docs/en"}
]
- doc-build/src/config.js
# 將github倉庫地址切換為gitee,注意沒有.git后綴,多版本構建文檔會checkout對應分支
repoUrl: `https://gitcode.com/GitHub_Trending/st/starrocks`
- doc-build_IGNORE\cp_common_docs.sh 刪除不需要的分支和語言
# 此處貼出我這次修改后的完整內容
#!/bin/bashrm -rf versioned_docs/version-*/release_notes versioned_docs/version-*/developers
rm -rf i18n/zh/docusaurus-plugin-content-docs/version-*/release_notes i18n/zh/docusaurus-plugin-content-docs/version-*/developersmkdir -p releasenotes
mkdir -p commonmkdir -p versioned_docs/version-3.5/_assets/
mkdir -p versioned_docs/version-3.1/_assets/
mkdir -p versioned_docs/version-2.5/_assets/mkdir -p versioned_docs/version-3.5/developers/
mkdir -p versioned_docs/version-3.1/developers/
mkdir -p versioned_docs/version-2.5/developers/mkdir -p i18n/zh/docusaurus-plugin-content-docs/version-3.5/_assets/
mkdir -p i18n/zh/docusaurus-plugin-content-docs/version-3.1/_assets/
mkdir -p i18n/zh/docusaurus-plugin-content-docs/version-2.5/_assets/mkdir -p i18n/zh/docusaurus-plugin-content-docs/version-3.5/developers/
mkdir -p i18n/zh/docusaurus-plugin-content-docs/version-3.1/developers/
mkdir -p i18n/zh/docusaurus-plugin-content-docs/version-2.5/developers/cp versioned_docs/version-3.5/_assets/visualized_heap_profile.png versioned_docs/version-3.1/_assets/
cp versioned_docs/version-3.5/_assets/visualized_heap_profile.png versioned_docs/version-2.5/_assets/
cp versioned_docs/version-3.5/_assets/visualized_heap_profile.png i18n/zh/docusaurus-plugin-content-docs/version-3.5/_assets/
cp versioned_docs/version-3.5/_assets/visualized_heap_profile.png i18n/zh/docusaurus-plugin-content-docs/version-3.1/_assets/
cp versioned_docs/version-3.5/_assets/visualized_heap_profile.png i18n/zh/docusaurus-plugin-content-docs/version-2.5/_assets/cp versioned_docs/version-3.5/_assets/debug_info.png versioned_docs/version-3.1/_assets/
cp versioned_docs/version-3.5/_assets/debug_info.png versioned_docs/version-2.5/_assets/
cp versioned_docs/version-3.5/_assets/debug_info.png i18n/zh/docusaurus-plugin-content-docs/version-3.5/_assets/
cp versioned_docs/version-3.5/_assets/debug_info.png i18n/zh/docusaurus-plugin-content-docs/version-3.1/_assets/
cp versioned_docs/version-3.5/_assets/debug_info.png i18n/zh/docusaurus-plugin-content-docs/version-2.5/_assets/cp versioned_docs/version-3.5/_assets/*trace*.png versioned_docs/version-3.1/_assets/
cp versioned_docs/version-3.5/_assets/*trace*.png versioned_docs/version-2.5/_assets/cp versioned_docs/version-3.5/_assets/*trace*.png i18n/zh/docusaurus-plugin-content-docs/version-3.5/_assets/
cp versioned_docs/version-3.5/_assets/*trace*.png i18n/zh/docusaurus-plugin-content-docs/version-3.1/_assets/
cp versioned_docs/version-3.5/_assets/*trace*.png i18n/zh/docusaurus-plugin-content-docs/version-2.5/_assets/cp versioned_docs/version-3.5/_assets/IDEA*.png versioned_docs/version-2.5/_assets/
cp versioned_docs/version-3.5/_assets/ide*.png versioned_docs/version-2.5/_assets/cp versioned_docs/version-3.5/_assets/IDEA*.png i18n/zh/docusaurus-plugin-content-docs/version-3.1/_assets/
cp versioned_docs/version-3.5/_assets/ide*.png i18n/zh/docusaurus-plugin-content-docs/version-3.1/_assets/
cp versioned_docs/version-3.5/_assets/IDEA*.png i18n/zh/docusaurus-plugin-content-docs/version-2.5/_assets/
cp versioned_docs/version-3.5/_assets/ide*.png i18n/zh/docusaurus-plugin-content-docs/version-2.5/_assets/mv common/releasenotes/en-us/release*.md releasenotes/
mv common/releasenotes/en-us/*or.md releasenotes/mv common/releasenotes/zh-cn/release*.md i18n/zh/docusaurus-plugin-content-docs-releasenotes/current/
mv common/releasenotes/zh-cn/*or.md i18n/zh/docusaurus-plugin-content-docs-releasenotes/current/cp -r common/releasenotes/en-us/build-starrocks versioned_docs/version-3.5/developers/
cp -r common/releasenotes/en-us/code-style-guides versioned_docs/version-3.5/developers/
cp common/releasenotes/en-us/debuginfo.md versioned_docs/version-3.5/developers/
cp -r common/releasenotes/en-us/development-environment versioned_docs/version-3.5/developers/
cp common/releasenotes/en-us/How_to_Contribute.md versioned_docs/version-3.5/developers/
cp common/releasenotes/en-us/jemalloc_heap_profile.md versioned_docs/version-3.5/developers/
cp -r common/releasenotes/en-us/trace-tools versioned_docs/version-3.5/developers/
cp common/releasenotes/en-us/versions.md versioned_docs/version-3.5/developers/cp -r versioned_docs/version-3.5/developers/* versioned_docs/version-3.1/developers/
cp -r versioned_docs/version-3.5/developers/* versioned_docs/version-2.5/developers/cp -r common/releasenotes/zh-cn/build-starrocks i18n/zh/docusaurus-plugin-content-docs/version-3.5/developers/
cp -r common/releasenotes/zh-cn/code-style-guides i18n/zh/docusaurus-plugin-content-docs/version-3.5/developers/
cp common/releasenotes/zh-cn/debuginfo.md i18n/zh/docusaurus-plugin-content-docs/version-3.5/developers/
cp -r common/releasenotes/zh-cn/development-environment i18n/zh/docusaurus-plugin-content-docs/version-3.5/developers/
cp common/releasenotes/zh-cn/How_to_Contribute.md i18n/zh/docusaurus-plugin-content-docs/version-3.5/developers/
cp common/releasenotes/zh-cn/jemalloc_heap_profile.md i18n/zh/docusaurus-plugin-content-docs/version-3.5/developers/
cp -r common/releasenotes/zh-cn/trace-tools i18n/zh/docusaurus-plugin-content-docs/version-3.5/developers/
cp common/releasenotes/zh-cn/versions.md i18n/zh/docusaurus-plugin-content-docs/version-3.5/developers/cp -r i18n/zh/docusaurus-plugin-content-docs/version-3.5/developers/* i18n/zh/docusaurus-plugin-content-docs/version-3.1/developers/
cp -r i18n/zh/docusaurus-plugin-content-docs/version-3.5/developers/* i18n/zh/docusaurus-plugin-content-docs/version-2.5/developers/rm versioned_docs/version-3.1/developers/versions.md
rm versioned_docs/version-2.5/developers/versions.md
rm i18n/zh/docusaurus-plugin-content-docs/version-3.1/developers/versions.md
rm i18n/zh/docusaurus-plugin-content-docs/version-2.5/developers/versions.md
3. 構建過程和對應截圖
3.1 doc-build clone、yarn install、starrocks clone
3.2 執行 npm run copy、設置參數、yarn clear
從package.json可以看出執行的實際命令是 node cli.js copy,cli.js中定義了根據versions.json和locales.json定義下載指定的分支和語言文檔文件的操作,最后會調用doc-build\_IGNORE\cp_common_docs.sh復制上述文檔到指定位置用于后續的構建
3.3 開始構建文檔、開啟web服務
666 開始訪問 localhost:3000
和官網基本看不出差別,左上角的分支切換、語言切換,右上角的搜索功能也都全部支持,開心,祝大家都能構建成功 !!!
也可直接cmd切換到doc-build/build并執行python -m http.server,也可正常使用,體驗感可能會差點,但勝在方便