Aggiungere EmDash a un progetto Astro esistente

In questa pagina

npm create emdash@latest fornisce un progetto pre-configurato, ma EmDash si integra anche in un sito Astro esistente. Questa guida illustra ogni requisito che il template di partenza normalmente gestisce per te.

Prerequisiti

  • Astro 6 o successivo — aggiorna prima se sei su una versione major precedente (npx @astrojs/upgrade)
  • Node.js v22.12.0 o superiore (le versioni dispari non sono supportate)
  • Output server — EmDash serve contenuti a runtime, il tuo progetto necessita di output: "server" e un adapter

Installare i pacchetti

npm

npm install emdash @astrojs/react react react-dom

pnpm

pnpm add emdash @astrojs/react react react-dom

yarn

yarn add emdash @astrojs/react react react-dom

Per un database SQLite locale:

npm install better-sqlite3

Registrare le integrazioni

import { defineConfig } from "astro/config";
import node from "@astrojs/node";
import react from "@astrojs/react";
import emdash, { local } from "emdash/astro";
import { sqlite } from "emdash/db";

export default defineConfig({
	output: "server",
	adapter: node({ mode: "standalone" }),
	integrations: [
		react(),
		emdash({
			database: sqlite({ url: "file:./data.db" }),
			storage: local({
				directory: "./uploads",
				baseUrl: "/_emdash/api/media/file",
			}),
		}),
	],
});

Aggiungere il loader delle live collection

import { defineLiveCollection } from "astro:content";
import { emdashLoader } from "emdash/runtime";

export const collections = {
	_emdash: defineLiveCollection({ loader: emdashLoader() }),
};

Verificare l’installazione

  1. Avvia il server di sviluppo:

    npm run dev
  2. Apri http://localhost:4321/_emdash/admin e completa la procedura guidata di configurazione.

  3. Crea e pubblica un post, poi interrogalo da una pagina:

    ---
    import { getEmDashCollection } from "emdash";
    
    const { entries: posts } = await getEmDashCollection("posts", {
    	status: "published",
    });
    ---
    
    <ul>{posts.map((post) => <li>{post.data.title}</li>)}</ul>

Distribuire su Cloudflare

Segui Distribuire su Cloudflare per la configurazione completa.

Risoluzione dei problemi

SintomoCausaSoluzione
Admin bloccato su “Loading EmDash…”@astrojs/react non registratoAggiungere react() alle integrations
Could not resolve "astro:content"Astro precedente alla 6Aggiornare Astro
getEmDashCollection restituisce erroresrc/live.config.ts mancanteAggiungere il loader
Errori di buildDipendenze peer non installateInstallare @astrojs/react, react, react-dom
Le modifiche al contenuto non appaionoPagina pre-renderizzataImpostare export const prerender = false

Prossimi passi