Перайсці да зместу

Разгортванне на Netlify ​

Netlify прапануе выдатны хостынг статычных сайтаў са шчодрым бясплатным тарыфам.

Разгортванне адным клікам ​

Разгарнуць на Netlify

Ручное разгортванне ​

Крок 1: Падключыце рэпазіторый ​

  1. Увайдзіце ў Netlify
  2. Націсніце "Add new site" → "Import an existing project"
  3. Падключыце свой уліковы запіс GitHub
  4. Выберыце свой форк BentoPDF

Крок 2: Наладзьце параметры зборкі ​

НаладаЗначэнне
Build commandnpm run build
Publish directorydist
Версія Node18+

Крок 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

Важна

Загалоўкі Cross-Origin-Embedder-Policy і Cross-Origin-Opener-Policy патрэбныя для пераўтварэнняў Word/ODT/Excel/PowerPoint у PDF. Без іх SharedArrayBuffer недаступны, і рухавік LibreOffice WASM не ініцыялізуецца.

Загалоўкі Content-Encoding: gzip для файлаў .wasm.gz і .data.gz кажуць браўзеру распакоўваць іх аўтаматычна. Без іх браўзер атрымлівае сырыя байты 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%, адкрыйце кансоль DevTools і праверце:

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

Калі crossOriginIsolated роўна false, загалоўкі COEP/COOP з вашага netlify.toml не прымяняюцца. Пераканайцеся, што файл ляжыць у корані праекта, і разгарніце нанова.

Калі ў кансолі бачна expected magic word 00 61 73 6d, found 1f 8b 08 08, у файлаў .wasm.gz няма загалоўкаў Content-Encoding: gzip. Пераканайцеся, што блокі [[headers]] для soffice.wasm.gz і soffice.data.gz ёсць у вашым netlify.toml.

Памылка зборкі ​

Праверце сумяшчальнасць версіі Node:

toml
[build.environment]
  NODE_VERSION = "20"

Павольная першая загрузка ​

Уключыце аптымізацыю рэсурсаў у Site settings → Build & deploy → Asset optimization.

Двайная ліцэнзія: AGPL-3.0 і камерцыйная ліцэнзія.