EmDash est une intégration Astro. Vous l’ajoutez à astro.config.mjs, choisissez une base de données et un stockage, et définissez des collections de contenu. Cette page couvre le modèle dont vous avez besoin pour construire un site. Pour les aspects internes (dispositions de tables, chemin de requête, génération de code), consultez Architecture (internes).
Ce qu’EmDash ajoute à votre site
┌──────────────────────────────────────────────┐
│ Votre site Astro │
│ │
│ Pages et composants que vous écrivez │
│ │ │
│ │ getEmDashCollection() / getEmDashEntry()
│ ▼ │
│ ┌───────────────┐ ┌────────────────┐ │
│ │ Contenu │ │ Panneau admin │ │
│ │ (vos données) │◄────►│ /_emdash/admin │ │
│ └───────────────┘ └────────────────┘ │
│ │ │
│ Base de données (SQLite / libSQL / D1 / Postgres)│
│ Stockage média (local / R2 / S3) │
└──────────────────────────────────────────────┘
Vous écrivez des pages et des composants normalement. EmDash fournit le contenu, un panneau d’administration pour l’éditer, et la base de données et le stockage sous-jacents. Les éditeurs travaillent dans le panneau d’administration ; vos pages lisent le même contenu via des fonctions de requête.
Votre modèle de contenu
Vous définissez des collections et des champs — dans le panneau d’administration ou avec la CLI — et EmDash y stocke le contenu.
Modifiable à tout moment
Ajoutez, renommez, supprimez ou retypisez des collections et des champs quand vous en avez besoin. Les modifications prennent effet immédiatement.
Conçu par les éditeurs
Un éditeur de contenu peut concevoir l’ensemble du modèle via l’interface d’administration.
Typé
Générez des types TypeScript à partir du modèle actuel pour l’autocomplétion de la requête au template.
Portable
Exportez le modèle sous forme de fichier JSON seed pour le contrôle de version, et appliquez-le dans un autre environnement.
Consultez le modèle de contenu pour savoir comment définir, modifier, typer et ensemencer.
Le contenu est en temps réel
EmDash sert le contenu via les Live Collections d’Astro à l’exécution, de sorte que les modifications apportées par un éditeur sont immédiatement visibles. Vous lisez le contenu avec deux fonctions :
import { getEmDashCollection, getEmDashEntry } from "emdash";
const { entries: posts } = await getEmDashCollection("posts");
const { entry: post } = await getEmDashEntry("posts", "my-post-slug");
Consultez Interroger le contenu pour le filtrage, la pagination et les brouillons.
Ce que vous configurez
Vous passez une base de données et un backend de stockage à l’intégration. Tout le reste a une valeur par défaut.
import { defineConfig } from "astro/config";
import emdash, { local } from "emdash/astro";
import { sqlite } from "emdash/db";
export default defineConfig({
integrations: [
emdash({
database: sqlite({ url: "file:./data.db" }),
storage: local({ directory: "./uploads" }),
}),
],
});
- Base de données : SQLite (local ou libSQL), Cloudflare D1, ou PostgreSQL. Consultez Options de base de données.
- Stockage : le système de fichiers local, Cloudflare R2, ou tout stockage compatible S3 pour les médias. Consultez Options de stockage.
Extension avec des plugins
Les plugins réagissent aux événements du cycle de vie du contenu et des médias et peuvent ajouter des pages d’administration, des widgets de tableau de bord et des paramètres. Il existe deux formats :
- Plugins natifs s’exécutent dans l’environnement hôte avec un accès complet. Idéal pour les plugins propriétaires et de confiance.
- Plugins sandboxés s’exécutent dans un environnement d’exécution isolé avec des autorisations basées sur les capacités. Idéal pour les plugins tiers.
Consultez la présentation des plugins pour choisir et installer des plugins, ou créer un plugin.
Prochaines étapes
Collections
Définissez des collections de contenu et types de champs.
Modèle de contenu
Comprenez le modèle de contenu.
Panneau d'administration
Découvrez ce que le panneau d’administration offre aux éditeurs et administrateurs.