Topics

Van microCMS naar EmDash + Cloudflare migreren

  • column

Wat is EmDash?

Een CMS dat Cloudflare heeft aangekondigd als de spirituele opvolger van WordPress.
Het is een full-stack CMS met een modern architectuur, bestaande uit diverse Cloudflare-bronnen (D1/R2/Workers) + Astro – echt een CMS uit het Cloudflare-ecosysteem!
Ter wille van het experiment hebben we een blog die oorspronkelijk met microCMS was gebouwd, experimenteel naar EmDash gemigreerd.

De gemigreerde site vindt u hierYuru Log
Dit is voorlopig een experimentele site, dus we gebruiken het standaardthema. Later passen we het design aan.

Installatieproces

1. Project aanmaken

Voer npm create emdash@latest uit. U wordt interactief om verschillende keuzes gevraagd.

2. Cloudflare-bronnen aanmaken

U kunt eenvoudig databases en opslagruimte aanmaken en implementeren op deze manier.

npx wrangler login
npx wrangler d1 create my-site
npx wrangler r2 bucket create my-site-media
npm run build && npm run deploy

3. Lokale ontwikkeling

npx emdash dev start uw lokale omgeving. Ga naar het beheervenster
http://localhost:4321/_emdash/admin
en voltooi de instellingen.

4. Deployment en initiële instellingen

npx wrangler deploy implementeert naar Workers en publiceert op https://[name].workers.dev.
Omdat de lokale en externe database onafhankelijk zijn, is de initiële setup (beheerdersaccount aanmaken) ook nodig op het externe beheerdashboard.

Door GitHub-repository aan te koppelen is automatische deployment via push mogelijk (Cloudflare-dashboard → Workers → Instellingen → Build → GitHub-repository koppelen).

5. Artikelenmigratie vanuit microCMS

We hebben een migratiescript gemaakt, alle artikelen opgehaald via microCMS API en ingevoerd via de EmDash CLI content create commando.

Belangrijkste punten

  • Zet de microCMS rijke editor (HTML) om naar Markdown voor import
  • Afbeeldingen zijn eerst gemigreerd met externe URL's en later vervangen na upload naar R2
  • Gebruik npx emdash content create in plaats van npx emdash seed (seed maakt geen revisie aan, dus het artikel wordt niet weergegeven)

Laten we het uitproberen

Het is een CMS die het beste van twee werelden combineert: de gemakkelijke setup en implementatie van een headless CMS met de volledige controle en gebruiksgemak van een full-stack CMS.
Het voordeel is vooral dat het op Astro is gebaseerd, dus je kunt je bestaande kennis direct toepassen. Voor kleine tot middelgrote blogs leek het erg geschikt.
Echter, omdat de Cloudflare-adapter van Astro nog geen Cache API-ondersteuning heeft, wordt de pagina bij elk verzoek opnieuw gegenereerd van D1, wat resulteert in lagere snelheid. Je zult moeten wachten op ondersteuning of zelf caching implementeren.

Omdat het nog in bèta is,

  • Preview van concepten werkt standaard niet (zie hieronder)
  • WYSIWYG-uitlijning naar het centrum en naar rechts wordt niet weergegeven
  • Bij het bewerken van menu-items, relatieve paden veroorzaken fouten
  • Aangepaste velden kunnen niet worden gerangschikt
  • Gebruikers kunnen niet worden uitgenodigd

en meer problemen (op v0.1.0).

Implementatie in werkelijke projecten zal dus nog wel even op zich laten wachten.

Over het voorbeeld van concepten

In het bewerkingsscherm is er een knop 'Preview draft' beschikbaar, maar je kunt geen voorbeeld bekijken van artikelen in conceptstatus.

EmDash biedt een voorbeeldmechanisme, maar dit is standaard niet ingeschakeld, dus de volgende aanpassingen waren nodig.

  1. Stel een willekeurige geheime sleutel in voor de omgevingsvariabele PREVIEW_SECRET (kan worden gegenereerd met npx emdash auth secret)
  2. Gebruik verifyPreviewToken op de artikelpagina om concepten op te halen
import { getEmDashEntry, verifyPreviewToken } from "emdash";

const preview = await verifyPreviewToken({
  url: Astro.url,
  secret: import.meta.env.PREVIEW_SECRET,
});

const { entry, isPreview } = await getEmDashEntry("posts", slug, { preview });

Nu kun je conceptartikelen bekijken via de knop 'Preview draft' in het beheerpaneel.

Samenvatting

Deze keer heb ik het als een volledig stack geïmplementeerd, maar het lijkt ook mogelijk om het als een 'headless CMS' te gebruiken door artikelen op te halen met fetch en SSG-builds te maken. Ik ben van plan dat binnenkort ook uit te proberen.

Nog steeds een bètaversie die net is uitgebracht. Ik kijk ernaar uit hoe dit zich verder zal ontwikkelen!

Auteur van dit artikel

Vanuit DTP de wereld van het web in gestapt en merkte al snel dat hij markering, frontend, directie en accessibility allemaal beheerst — een echte 'meester van techniek'. Sinds de oprichting van Liberogic een multitalent en inmiddels een levend naslagwerk in het bedrijf. Tegenwoordig is hij geïnteresseerd in de vraag "Kunnen we accessibility-implementatie meer aan AI overlaten?" en experimenteert hij graag met efficiëntie via prompts. Zowel technisch als mentaal nog volop in ontwikkeling.

Futa

IAAP-gecertificeerd webtoegankelijkheidsspecialist (WAS) / Opmaakingenieur / Frontend-ingenieur / Webdirecteur

Artikelen van deze medewerker bekijken

Ons sterke punt is ons betrouwbare teamstructuur en snelle responsiviteit

Bij Liberogic worden ervaren teamleden actief ingezet voor projectvoering, wat door klanten zeer wordt gewaardeerd.
We wijzen vakbekwaam projectmanagers en directors aan en streven ernaar projecten soepel te laten verlopen. We voorkomen onnodig kostenverhogingen door volledig inzet te vermijden en wijzen middelen toe waar ze het meest geschikt zijn. Onze snelheid bij taakanalyse en bij het opmaken en indienen van offertes is goed bekend.

* Wij voeren niet actief SES-achtige permanente werkzaamheden uit, dus graag van tevoren dank voor uw begrip.

U kunt vrijwel alle grote projectmanagementtools en chattoolsgebruiken, zoals Slack, Teams, Redmine, Backlog, Asana, Jira, Notion, Google Workspace, Zoom en Webex.

Bij grootschalige projecten met SES of offshoring: hebt u vragen of zorgen over technische uitdagingen en aanpak?

Casestudies