存储

为你的 CMS 设置不同的存储方式

cms.storage() 函数允许注册不同的存储方式来保存站点数据。当注册一个存储时,它必须有一个名称,该名称将在你的文档、集合和上传中被使用。

LumeCMS 支持几种类型的存储。

文件系统

Tip

Lume 自动配置指向 src 文件夹的 src 存储。因此你不需要设置文件系统存储。

要注册文件系统存储,导入 Fs 类并使用名称注册它。例如,让我们注册一个名为 "my_files" 的文件系统存储,指向 ./files 文件夹:

import lumeCMS, { Fs } from "lume/cms/mod.ts";

const cms = lumeCMS();
const root = Deno.cwd() + "/files";

cms.storage("my_files", new Fs({ root }));

export default cms;

现在 my_files 存储可供 CMS 读取和写入内容。由于文件系统是读取和写入数据最常见的方式,因此上面的示例可以简化为以下形式:

import lumeCMS from "lume/cms/mod.ts";

const cms = lumeCMS();

cms.storage("my_files", "files");

export default cms;

正如你所看到的,如果你将字符串定义为存储,LumeCMS 会假定它是一个文件夹名称,因此会自动使用文件系统存储。另请注意,你不需要在文件夹名称前添加 Deno.cwd(),因为 root option (默认为 Deno.cwd())的值被用作基础路径。

KV

Deno Kv 是一个直接构建到 Deno 运行时的键值数据库。LumeCMS 可以使用 Kv 实例来存储内容。例如:

import lumeCMS from "lume/cms/mod.ts";
import Kv from "lume/cms/storage/kv.ts";

const cms = lumeCMS();
const kv = await Deno.openKv();

cms.storage("my_values", new Kv({ kv }));

export default cms;

GitHub

允许直接从 GitHub 仓库使用 GitHub API 写入和读取值。如果你想允许没有 GitHub 帐户或权限的人员编辑站点数据,这将非常有用。

import lumeCMS from "lume/cms/mod.ts";
import GitHub from "lume/cms/storage/github.ts";
import { Octokit } from "npm:octokit";

const cms = lumeCMS();

const client = new Octokit({
  auth: "xxx", // A personal access token, (一个个人访问令牌)
});

cms.storage(
  "gh",
  new GitHub({
    client,
    owner: "username",
    repo: "example",
  }),
);

export default cms;

生成 GitHub 访问令牌

  1. 登录 GitHub 并确保你拥有管理仓库的权限。
  2. 转到 精细化令牌 并点击 Generate new token(生成新令牌)。
  3. 为令牌设置名称和过期日期。
  4. Repository access(仓库访问)部分,选择 Only select repositories(仅选择仓库)并添加你要管理的仓库。
  5. 打开 Repository permissions(仓库权限)并选择 Contents(内容)部分中的 Read and write(读取和写入)访问级别。
  6. 点击 Generate token(生成令牌)。