EmDash構築方法 ― pnpm で始める Astro 製CMS
はじめに
EmDashは、Astro上に作られたフルスタックのTypeScript製CMSです。Cloudflareが開発し、MITライセンスで公開されています。「WordPressを今の技術でゼロから作り直したら」をコンセプトに、管理画面・REST API・パスキー認証・メディアライブラリ・プラグイン機構を1つのAstroインテグレーションとして提供します。
この記事では、pnpmを使ってローカルにEmDashサイトを立ち上げ、記事を公開し、Astroのページからコンテンツを取得するところまでを解説します。最後に本番デプロイ(Node.js / Cloudflare)の流れも紹介します。
- 執筆時点のバージョン:
emdash@1.0.x(2026年9〜10月時点) - 開発が速いプロジェクトなので、始める前に
pnpm view emdash versionで最新版を確認してください - ローカル構築だけならCloudflareアカウント・Docker・DBサーバーは不要です(SQLiteで動きます)
前提条件
それぞれのミドルウェアは下記のバージョンを利用します。ここで、Node.js については 22.16.0以上が必須のようです。
項目 | 要件 |
|---|---|
Node.js | 26.12.1 |
パッケージマネージャー | pnpm(10.15.1) |
バージョンを確認します。
$ node --version # v22.16.0 以上であること
$ pnpm --versionプロジェクトを作成する
下記コマンドでemdashのひな形を作成します。以下は作成時の対話内容です。ここで、EmDashのプラグインはバックエンドでDynamic Workersを利用します。そのため、利用のためには workers paid への登録が必要のようです。
$ pnpm create emdash@latest
┌ Create a new EmDash project
│
◇ Project name? (use "." for current directory)
│ test
│
◇ Where will you deploy?
│ Cloudflare Workers
│
◇ Which template?
│ Blog
│
◇ Which package manager?
│ pnpm
│
◇ Install dependencies?
│ Yes
│
◇ Enable sandboxed plugins? (Requires Worker Loader, available on Workers paid plans)
│ No
│
◇ Project created!開発サーバーを起動してセットアップする
プロジェクトに移動して開発サーバーを起動します。
$ cd my-emdash-site
$ pnpm dev指定されたURL(しばしば http://localhost:4321/)を開くことで、下記の画面が表示されます。

wrangler.jsoncを修正する
wrangler.jsonc は、Cloudflare Workers のデプロイツール「Wrangler」が読む設定ファイルです。Worker の名前や、D1(データベース)・R2(メディア保存先)との接続をここに書きます。.jsonc はコメントを書ける JSON という意味です。Cloudflare にデプロイするときだけ使い、Node.js 構成では使いません。
標準で作成されるwrangler.jsoncは下記のようなファイルです。database_nameやbucket_nameを、必須ではありませんがサービスに即した名前に変更すると良いです。
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "my-emdash-site",
"main": "./src/worker.ts",
"compatibility_date": "2026-02-24",
"compatibility_flags": ["nodejs_compat"],
"d1_databases": [
{ "binding": "DB", "database_name": "my-emdash-site" }
],
"r2_buckets": [
{ "binding": "MEDIA", "bucket_name": "my-emdash-media" }
],
// "worker_loaders": [{ "binding": "LOADER" }],
"triggers": { "crons": ["* * * * *"] }
}本番にデプロイする
下記コマンドでデプロイします。ここで、kv namespaceについてについては標準で作成されないことがあるようです。そのような場合は、エラーメッセージが出ることがあります。
pnpm deploy下記コマンドでkvを作成することができます。作成後、改めてデプロイコマンドを押下します。
npx wrangler kv namespace create {kv 名}Tips:.gitignoreについて
gitignore.ioにて、Astro、Node、Remix+CloudflareWorkersを指定して作成します。また、追加で以下の2行を追加します。
.wrangler/
.emdash/
Discussion
No comments yet