创建你的第一个 EmDash 站点

本页内容

本教程从 Starter 模板创建 Node.js 站点。结果使用 SQLite 与本地 媒体存储,因此你可以在没有云账户的情况下完成本教程。

若你已有 Astro 站点,请改为遵循将 EmDash 添加到现有 Astro 项目。

前置条件

安装 Node.js 22.16 或更高版本以及 npm。继续前检查已安装的 Node.js 版本:

node --version

该命令必须报告 v22.16.0 或更高版本。

搭建站点

  1. 启动交互式脚手架:

    npm

    npm create emdash@latest

    pnpm

    pnpm create emdash@latest

    yarn

    yarn create emdash

    bun

    bun create emdash@latest
  2. 出现提示时选择以下选项:

    • Project name: my-emdash-site
    • Where will you deploy? Node.js
    • Which template? Starter
    • Which package manager? 保留步骤 1 中命令检测到的包管理器。
    • Install dependencies? Yes

    这些选择会创建带有 Posts 与 Pages 的通用 Node.js 站点。脚手架还会 将生成的 EMDASH_ENCRYPTION_KEY 写入被 gitignore 的 .env 文件。

    若依赖安装失败,项目文件仍会保留。继续前请运行脚手架 打印的重试命令。

  3. 进入项目目录并启动开发服务器:

    npm

    cd my-emdash-site
    npm run dev

    pnpm

    cd my-emdash-site
    pnpm dev

    yarn

    cd my-emdash-site
    yarn dev

    bun

    cd my-emdash-site
    bun dev

    保持此终端打开。Astro 会打印本地站点 URL,通常为 http://localhost:4321/。

完成设置

打开 http://localhost:4321/_emdash/admin/。新站点会重定向到设置向导。

  1. 输入 Site Title 与可选的 Tagline。保持选中 Include sample content,以便教程 从模板的 Welcome 文章与 About 页面开始,然后选择 Continue。

  2. 输入 Your Email 与可选的 Your Name,然后选择 Continue。

  3. 当浏览器打开凭据提示时注册通行密钥。注册后选择 Open the dashboard。

仪表板打开,导航中有 Posts 与 Pages。设置向导已将 Starter 模板的内容模型与示例内容应用到本地 SQLite 数据库。

发布一次编辑

  1. 打开 Posts,然后打开 Welcome。

  2. 将标题改为 Hello from EmDash,然后选择 Save。

  3. 选择 Publish changes,使已保存的草稿成为向访客显示的版本。

  4. 在另一个标签页打开 http://localhost:4321/。首页会列出 Hello from EmDash。

当 Astro 渲染首页时,Starter 模板会调用 getEmDashCollection("posts")。重新加载 页面会在运行时从 EmDash 读取已发布版本。

生成的站点如何工作

脚手架会生成一个普通的 Astro 项目,EmDash 在三处连接。

astro.config.mjs 启用服务器渲染与 Node.js 适配器。它还为管理面板注册 React, 并为 EmDash 提供 SQLite 数据库与上传媒体的目录。 src/live.config.ts 文件将该基于数据库的内容连接到 Astro 的 Live Content Collections。

首页随后查询 posts 集合。其查询等价于生成页面的以下部分:

---
import { getEmDashCollection } from "emdash";

const { entries: posts, cacheHint } = await getEmDashCollection("posts", {
	orderBy: { published_at: "desc" },
});

if (Astro.cache?.enabled) Astro.cache.set(cacheHint);
---

<ul>
	{posts.map((post) => <li>{post.data.title}</li>)}
</ul>

seed/seed.json 定义 Posts 与 Pages 集合、它们的字段,以及设置向导应用的示例内容。 在本地开发期间,EmDash 读取该模型并刷新 emdash-env.d.ts,以便你的编辑器可以检查查询代码中的集合名称与字段。

生成的 .env 在运行时提供加密密钥。它与存储模型与内容的 SQLite 文件是分开的。

下一步

阅读架构了解这些部分如何协同工作。要将 EmDash 添加到已有站点,请遵循 将 EmDash 添加到现有 Astro 项目。 查询内容指南涵盖筛选、分页、草稿与错误处理。 当站点准备好离开你的机器时,将其部署到 Cloudflare Workers 或 Node.js。 媒体库指南说明上传、媒体字段、替换与删除。