跳至內容

部署到 Netlify ​

Netlify 提供優秀的靜態網站託管服務,並有慷慨的免費方案。

一鍵部署 ​

部署到 Netlify

手動部署 ​

步驟 1:連結儲存庫 ​

  1. 登入 Netlify
  2. 點選「Add new site」→「Import an existing project」
  3. 連結您的 GitHub 帳號
  4. 選擇您的 BentoPDF 分支

步驟 2:設定建置選項 ​

設定項目值
建置指令npm run build
發佈目錄dist
Node 版本18+

步驟 3:部署 ​

點選「Deploy site」並等待建置完成。

設定檔 ​

在專案根目錄建立 netlify.toml:

toml
[build]
  command = "npm run build"
  publish = "dist"

[build.environment]
  NODE_VERSION = "18"

# Required security headers for SharedArrayBuffer (used by LibreOffice WASM)
[[headers]]
  for = "/*"
  [headers.values]
    Cross-Origin-Embedder-Policy = "require-corp"
    Cross-Origin-Opener-Policy = "same-origin"
    Cross-Origin-Resource-Policy = "cross-origin"

# Pre-compressed LibreOffice WASM binary - must be served with Content-Encoding
[[headers]]
  for = "/libreoffice-wasm/soffice.wasm.gz"
  [headers.values]
    Content-Type = "application/wasm"
    Content-Encoding = "gzip"
    Cache-Control = "public, max-age=31536000, immutable"

# Pre-compressed LibreOffice WASM data - must be served with Content-Encoding
[[headers]]
  for = "/libreoffice-wasm/soffice.data.gz"
  [headers.values]
    Content-Type = "application/octet-stream"
    Content-Encoding = "gzip"
    Cache-Control = "public, max-age=31536000, immutable"

# Cache other WASM files
[[headers]]
  for = "*.wasm"
  [headers.values]
    Cache-Control = "public, max-age=31536000, immutable"
    Content-Type = "application/wasm"

# SPA routing
[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

重要

Word/ODT/Excel/PowerPoint 轉 PDF 需要 Cross-Origin-Embedder-Policy 與 Cross-Origin-Opener-Policy 標頭。沒有它們,SharedArrayBuffer 將無法使用,LibreOffice WASM 引擎也會初始化失敗。

.wasm.gz 與 .data.gz 檔案上的 Content-Encoding: gzip 標頭會告訴瀏覽器自動解壓縮。少了這些標頭,瀏覽器會收到原始 gzip 位元組,導致 WASM 編譯失敗。

環境變數 ​

在 Site settings → Environment variables 中設定:

變數說明
SIMPLE_MODE設為 true 以使用精簡建置
VITE_BRAND_NAME自訂品牌名稱(取代「BentoPDF」)
VITE_BRAND_LOGO相對於 public/ 的標誌路徑(例如 images/my-logo.svg)
VITE_FOOTER_TEXT自訂頁尾或版權文字
VITE_DEFAULT_LANGUAGE預設介面語言(例如 fr、de、es)

自訂網域 ​

  1. 前往 Site settings → Domain management
  2. 點選「Add custom domain」
  3. 依照 DNS 設定說明操作

大型媒體 ​

對於大型 WASM 檔案,可考慮啟用 Netlify Large Media:

bash
netlify lm:setup
git lfs track "*.wasm"

疑難排解 ​

Word/ODT/Excel 轉 PDF 卡在 55% ​

如果文件轉換卡在 55%,請開啟開發者工具主控台並檢查:

js
console.log(window.crossOriginIsolated); // should be true
console.log(typeof SharedArrayBuffer); // should be "function"

如果 crossOriginIsolated 為 false,表示 netlify.toml 中的 COEP/COOP 標頭沒有套用。請確認檔案位於專案根目錄,然後重新部署。

如果您在主控台看到 expected magic word 00 61 73 6d, found 1f 8b 08 08,表示 .wasm.gz 檔案缺少 Content-Encoding: gzip 標頭。請確認 netlify.toml 中有 soffice.wasm.gz 與 soffice.data.gz 的 [[headers]] 區塊。

建置失敗 ​

檢查 Node 版本相容性:

toml
[build.environment]
  NODE_VERSION = "20"

初次載入緩慢 ​

在 Site settings → Build & deploy → Asset optimization 中啟用資源最佳化。

以 AGPL-3.0 與商業授權雙重授權。