離線使用
想把文件當成下載檔案,或跟產品一起發行嗎?Zensical 可以確保從檔案系統直接開啟(file://)時,站內搜尋仍然能運作。
啟用離線外掛
設定之後,把 site/ 資料夾的內容當作下載檔案散布,使用者用瀏覽器直接開啟 index.html 就能搜尋。
離線外掛只有一個設定:
沒辦法用環境變數切換
在 mkdocs.yml 可以用 !ENV [OFFLINE, false] 依環境變數啟用或停用;zensical.toml 目前沒有這個功能。官方表示之後會提供更完整的變體管理機制。
另外,離線建置時,use_directory_urls 會自動設成 false,見 專案基本設定。
限制
Zensical 的許多互動功能在檔案系統上無法運作,因為現代瀏覽器的限制:所有使用 fetch API 的功能都會出錯。
因此,建置離線版本時,請關閉下列設定:
- 即時導覽(instant navigation)
- 網站分析
- 程式庫連結(會請求星星數與版本)
- 留言系統
file:// 協定支援
離線模式需要一小段 JavaScript 來支援 file://,它使用一個叫 iframe-worker 的小型 WebWorker,預設會從 unpkg.com 下載。如果連這一步也要完全離線,可以把檔案放進自己的資源,再用 extra.polyfills 指定:
或者使用完整的寫法:
[project.extra]
polyfills = [
{ path = "js/iframe-worker-shim.js", type = "text/javascript", async = false, defer = false },
]
檔案位置範例:
檔名要包含 iframe-worker
檔名必須包含 iframe-worker 這個字串,否則 Zensical 還是會從 unpkg.com 再抓一次。
總結
| 步驟 | 做法 |
|---|---|
| 啟用 | [project.plugins.offline] |
| 關閉不相容功能 | instant navigation、分析、程式庫、留言 |
| 完全離線 | extra.polyfills 指定本地的 iframe-worker 檔案 |