mirror of https://github.com/OI-wiki/OI-wiki
feat: replace jsdelivr with locally bundled resources (#3702)
* Replace jsdelivr with locally bundled resources
* Test build with forked mkdocs-material
* Update MathJax extra_javascript in build.sh
* Make theme and vendor resources download URL configurable
* Make install_theme_vendor.sh print messages and exit on error
* Change GITTALK_REPO default value to https URL
* Fix shell script syntax 🌿
* Print error message with temp directory in install_theme_vendor.sh
* Use "set -e" instead of "bash -e"
* Add post-build script to clean unused resources (mathjax)
* Update scripts/install_theme.sh
pull/3712/head
parent
416b82d910
commit
f5092e8edc
|
@ -29,6 +29,7 @@ jobs:
|
|||
run: |
|
||||
chmod +x ./scripts/build.sh && ./scripts/build.sh
|
||||
mkdocs build -v
|
||||
bash ./scripts/post-build.sh
|
||||
- name: Render math
|
||||
run: node --max_old_space_size=3072 ./scripts/render_math.js
|
||||
- name: Gulp minify
|
||||
|
|
|
@ -43,6 +43,13 @@ cd OI-wiki
|
|||
pip3 install -U -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
|
||||
|
||||
# 使用我们的自定义主题(Windows 下请使用 Git Bash 执行)
|
||||
# 安装主题时将连接网络下载资源,可通过以下环境变量控制下载链接
|
||||
# scripts/install_theme.sh:
|
||||
# - THEME_REPO
|
||||
# scripts/install_theme_vendor.sh:
|
||||
# - MATHJAX_URL
|
||||
# - MATERIAL_ICONS_URL
|
||||
# - GITALK_REPO
|
||||
chmod +x ./scripts/install_theme.sh && ./scripts/install_theme.sh
|
||||
|
||||
# 两种方法(选其一即可):
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 450 B |
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
|
@ -4,7 +4,7 @@ title: OI Wiki
|
|||
|
||||
# 欢迎来到 **OI Wiki**![![GitHub watchers](https://img.shields.io/github/watchers/OI-wiki/OI-wiki.svg?style=social&label=Watch)](https://github.com/OI-wiki/OI-wiki) [![GitHub stars](https://img.shields.io/github/stars/OI-wiki/OI-wiki.svg?style=social&label=Stars)](https://github.com/OI-wiki/OI-wiki)
|
||||
|
||||
[![Word Art](https://cdn.jsdelivr.net/npm/oicdn@0.0.1/wordArt.webp)](https://github.com/OI-wiki/OI-wiki)
|
||||
[![Word Art](images/wordArt.webp)](https://github.com/OI-wiki/OI-wiki)
|
||||
|
||||
**OI**(Olympiad in Informatics,信息学奥林匹克竞赛)在中国起源于 1984 年,是五大高中学科竞赛之一。
|
||||
|
||||
|
@ -94,6 +94,6 @@ title: OI Wiki
|
|||
</script>
|
||||
|
||||
<div align="center">
|
||||
<a href="https://www.hulu.com/" target="_blank"><img height="40px" src="https://cdn.jsdelivr.net/npm/oicdn@0.0.1/hulu-black.png"></a>
|
||||
<a href="https://www.netlify.com/" target="_blank" style="margin-left: 60px;"><img height="40px" src="https://cdn.jsdelivr.net/npm/oicdn@0.0.2/netlify.png"></a>
|
||||
<a href="https://www.hulu.com/" target="_blank"><img height="40px" src="images/hulu-black.png"></a>
|
||||
<a href="https://www.netlify.com/" target="_blank" style="margin-left: 60px;"><img height="40px" src="images/netlify.png"></a>
|
||||
</div>
|
||||
|
|
|
@ -3,15 +3,15 @@
|
|||
"name": "OI Wiki",
|
||||
"icons": [
|
||||
{
|
||||
"src": "https://cdn.jsdelivr.net/npm/oicdn@0.0.1/favicon.ico",
|
||||
"src": "favicon.ico",
|
||||
"sizes": "48x48"
|
||||
},
|
||||
{
|
||||
"src": "https://cdn.jsdelivr.net/npm/oicdn@0.0.1/favicon_192x192.png",
|
||||
"src": "favicon_192x192.png",
|
||||
"sizes": "192x192"
|
||||
},
|
||||
{
|
||||
"src": "https://cdn.jsdelivr.net/npm/oicdn@0.0.2/favicon_512x512.png",
|
||||
"src": "favicon_512x512.png",
|
||||
"sizes": "512x512"
|
||||
}
|
||||
],
|
||||
|
|
|
@ -491,7 +491,7 @@ theme:
|
|||
accent: 'red'
|
||||
include_search_page: false
|
||||
search_index_only: true
|
||||
favicon: 'https://cdn.jsdelivr.net/npm/oicdn@0.0.1/favicon.ico'
|
||||
favicon: 'favicon.ico'
|
||||
|
||||
logo:
|
||||
icon: 'school'
|
||||
|
@ -520,7 +520,7 @@ extra:
|
|||
|
||||
extra_javascript:
|
||||
- '_static/js/extra.js?v=16'
|
||||
- 'https://cdn.jsdelivr.net/npm/mathjax@2.7.5/MathJax.js?config=TeX-MML-AM_CHTML'
|
||||
- 'assets/vendor/mathjax/MathJax.js?config=TeX-MML-AM_CHTML'
|
||||
|
||||
|
||||
extra_css:
|
||||
|
|
|
@ -14,4 +14,4 @@ chmod +x $INSTALL_THEME && $INSTALL_THEME
|
|||
|
||||
git rev-parse --short HEAD | xargs -I % sed -i "s/githash: ''/githash: '%'/g" mkdocs.yml
|
||||
#Will NOT Use Mathjax for Deploy
|
||||
sed -i "s/- 'https:\/\/cdn.jsdelivr.net\/npm\/mathjax@2.7.5\/MathJax.js?config=TeX-MML-AM_CHTML'//g" mkdocs.yml
|
||||
sed -i "s# - 'assets/vendor/mathjax/MathJax.js?config=TeX-MML-AM_CHTML'##g" mkdocs.yml
|
||||
|
|
|
@ -2,13 +2,9 @@
|
|||
|
||||
set -e
|
||||
|
||||
if [ ! -d "mkdocs-material" ] ; then
|
||||
git clone --depth=1 https://github.com/OI-wiki/mkdocs-material.git
|
||||
THEME_NAME="mkdocs-material"
|
||||
if [ ! -d "$THEME_NAME" ] ; then
|
||||
git clone --depth=1 ${THEME_REPO:-"https://github.com/OI-wiki/mkdocs-material.git"} "$THEME_NAME"
|
||||
fi
|
||||
|
||||
if [ "$(uname)" == "Darwin" ] ; then
|
||||
# macOS sed -i 需要添加""表示不备份修改
|
||||
sed -i "" "s/name: 'material'/name: null\n custom_dir: 'mkdocs-material\/material'\n static_templates:\n - 404.html/g" mkdocs.yml
|
||||
else
|
||||
sed -i "s/name: 'material'/name: null\n custom_dir: 'mkdocs-material\/material'\n static_templates:\n - 404.html/g" mkdocs.yml
|
||||
fi
|
||||
bash scripts/install_theme_vendor.sh
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
set -e
|
||||
|
||||
VENDOR_DIR="mkdocs-material/material/assets/vendor"
|
||||
rm -rf "$VENDOR_DIR"
|
||||
|
||||
function _when_error() {
|
||||
echo -e "\nOops! Failed to fetch vendor resources!"
|
||||
if [[ -d "$TEMP_DIR" ]]; then
|
||||
echo "Check the temp directory: $TEMP_DIR"
|
||||
fi
|
||||
}
|
||||
trap _when_error ERR
|
||||
|
||||
# MathJax
|
||||
TEMP_DIR="$(mktemp -d -t "download-mathjax-XXXXXXXX")"
|
||||
MATHJAX_URL=${MATHJAX_URL:-"https://registry.npmjs.org/mathjax/-/mathjax-2.7.5.tgz"}
|
||||
echo "Downloading MathJax to $TEMP_DIR"
|
||||
echo "URL: $MATHJAX_URL"
|
||||
MATHJAX_REQUIRED_FILES=(
|
||||
"config/TeX-MML-AM_CHTML.js"
|
||||
"extensions/TeX"
|
||||
"fonts/HTML-CSS/TeX/woff"
|
||||
"jax/output/CommonHTML"
|
||||
"jax/element"
|
||||
"MathJax.js"
|
||||
)
|
||||
curl "$MATHJAX_URL" | tar -C "$TEMP_DIR" -xzf -
|
||||
for FILE in "${MATHJAX_REQUIRED_FILES[@]}"; do
|
||||
FILE_TARGET_PATH="$VENDOR_DIR/mathjax/$FILE"
|
||||
FILE_SOURCE_PATH="$TEMP_DIR/package/$FILE"
|
||||
mkdir -p "$(dirname "$FILE_TARGET_PATH")"
|
||||
cp -r "$FILE_SOURCE_PATH" "$FILE_TARGET_PATH"
|
||||
done
|
||||
rm -rf "$TEMP_DIR"
|
||||
|
||||
# Material Icons
|
||||
TEMP_DIR="$(mktemp -d -t "download-material-icons-XXXXXXXX")"
|
||||
MATERIAL_ICONS_URL=${MATERIAL_ICONS_URL:-"https://registry.npmjs.org/material-icons/-/material-icons-0.2.3.tgz"}
|
||||
echo "Downloading material-icons to $TEMP_DIR"
|
||||
echo "URL: $MATERIAL_ICONS_URL"
|
||||
MATERIAL_ICONS_REQUIRED_FILES=(
|
||||
"iconfont/material-icons.css"
|
||||
"iconfont/MaterialIcons-Regular.woff"
|
||||
"iconfont/MaterialIcons-Regular.woff2"
|
||||
)
|
||||
curl "$MATERIAL_ICONS_URL" | tar -C "$TEMP_DIR" -xzf -
|
||||
for FILE in "${MATERIAL_ICONS_REQUIRED_FILES[@]}"; do
|
||||
FILE_TARGET_PATH="$VENDOR_DIR/material-icons/$FILE"
|
||||
FILE_SOURCE_PATH="$TEMP_DIR/package/$FILE"
|
||||
mkdir -p "$(dirname "$FILE_TARGET_PATH")"
|
||||
cp -r "$FILE_SOURCE_PATH" "$FILE_TARGET_PATH"
|
||||
done
|
||||
rm -rf "$TEMP_DIR"
|
||||
|
||||
# Gitalk
|
||||
TEMP_DIR="$(mktemp -d -t "download-gittalk-XXXXXXXX")"
|
||||
echo "Downloading Gitalk to $TEMP_DIR"
|
||||
echo "Repo: $TEMP_DIR"
|
||||
GITALK_REPO=${GITALK_REPO:-"https://github.com/OI-wiki/gitalk"}
|
||||
GITALK_BRANCH="mv1.0"
|
||||
GITALK_REQUIRED_FILES=(
|
||||
"gitalk-component.js"
|
||||
"gitalk.css"
|
||||
"gitalk.min.js"
|
||||
)
|
||||
git clone --single-branch --branch "$GITALK_BRANCH" --depth 1 "$GITALK_REPO" "$TEMP_DIR/gitalk"
|
||||
for FILE in "${GITALK_REQUIRED_FILES[@]}"; do
|
||||
FILE_TARGET_PATH="$VENDOR_DIR/gitalk/$FILE"
|
||||
FILE_SOURCE_PATH="$TEMP_DIR/gitalk/dist/$FILE"
|
||||
mkdir -p "$(dirname "$FILE_TARGET_PATH")"
|
||||
cp -r "$FILE_SOURCE_PATH" "$FILE_TARGET_PATH"
|
||||
done
|
||||
rm -rf "$TEMP_DIR"
|
|
@ -0,0 +1,2 @@
|
|||
# Clean unused files after build
|
||||
rm -rf site/assets/vendor/mathjax
|
Loading…
Reference in New Issue