Desplega a Netlify
Netlify ofereix un excel·lent allotjament de llocs estàtics amb un nivell gratuït generós.
Desplegament amb un clic
Desplegament manual
Pas 1: connecta el repositori
- Inicia sessió a Netlify
- Fes clic a "Add new site" → "Import an existing project"
- Connecta el teu compte de GitHub
- Selecciona el teu fork de BentoPDF
Pas 2: configura la compilació
| Paràmetre | Valor |
|---|---|
| Ordre de compilació | npm run build |
| Directori de publicació | dist |
| Versió de Node | 18+ |
Pas 3: desplega
Fes clic a "Deploy site" i espera que acabi la compilació.
Fitxer de configuració
Crea netlify.toml a l'arrel del projecte:
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 = 200Important
Les capçaleres Cross-Origin-Embedder-Policy i Cross-Origin-Opener-Policy són necessàries per a les conversions de Word/ODT/Excel/PowerPoint a PDF. Sense elles, SharedArrayBuffer no està disponible i el motor WASM de LibreOffice no es podrà inicialitzar.
Les capçaleres Content-Encoding: gzip als fitxers .wasm.gz i .data.gz indiquen al navegador que els descomprimeixi automàticament. Sense elles, el navegador rep bytes gzip en brut i la compilació de WASM falla.
Variables d'entorn
Defineix-les a Site settings → Environment variables:
| Variable | Descripció |
|---|---|
SIMPLE_MODE | Posa-ho a true per a una compilació mínima |
VITE_BRAND_NAME | Nom de marca personalitzat (substitueix "BentoPDF") |
VITE_BRAND_LOGO | Ruta del logotip relativa a public/ (p. ex. images/my-logo.svg) |
VITE_FOOTER_TEXT | Text personalitzat del peu de pàgina o dels drets d'autor |
VITE_DEFAULT_LANGUAGE | Idioma per defecte de la interfície (p. ex. fr, de, es) |
Domini personalitzat
- Ves a Site settings → Domain management
- Fes clic a "Add custom domain"
- Segueix les instruccions de configuració del DNS
Fitxers multimèdia grans
Per als fitxers WASM grans, considera activar Netlify Large Media:
bash
netlify lm:setup
git lfs track "*.wasm"Resolució de problemes
La conversió de Word/ODT/Excel a PDF es queda al 55 %
Si les conversions de documents es queden penjades al 55 %, obre la consola de DevTools i comprova:
js
console.log(window.crossOriginIsolated); // should be true
console.log(typeof SharedArrayBuffer); // should be "function"Si crossOriginIsolated és false, les capçaleres COEP/COOP del teu netlify.toml no s'estan aplicant. Assegura't que el fitxer és a l'arrel del projecte i torna a desplegar.
Si veus expected magic word 00 61 73 6d, found 1f 8b 08 08 a la consola, als fitxers .wasm.gz els falten les capçaleres Content-Encoding: gzip. Assegura't que els blocs [[headers]] de soffice.wasm.gz i soffice.data.gz són al teu netlify.toml.
La compilació falla
Comprova la compatibilitat de la versió de Node:
toml
[build.environment]
NODE_VERSION = "20"Càrrega inicial lenta
Activa l'optimització d'actius a Site settings → Build & deploy → Asset optimization.