创建扩展 Creating Extensions

有关如何脚手架的指南指南。

脚手架登录扩展名

开始开发扩展的最简单方法是使用create-directus-extension实用程序:

bash
npm init directus-extension

在指定了扩展名的名称之后,扩展名的类型和要使用的编程语言, 实用程序将创建一个具有建议的文件结构的文件夹以创建扩展名。

扩展文件夹结构

实用程序创建的文件夹实际上是一个NPM软件包。 它带有一些预安装的软件包,具体取决于 扩展类型和您选择的语言。 最重要的是@directus/Extensions-sdk。 此软件包包括一个 CLI,它使您可以构建扩展名并脚手架额外的扩展名,并提供打字稿的助手 和其他公用事业。

在创建的文件夹中有一个src/文件夹。 此文件夹包含扩展名的入口点。 如果你写其他源文件,它们应该进入此文件夹。

入口点
该入口点称为index.jsindex.ts,具体取决于您选择的编程语言。

生成的 package.json 文件包含一个附加的 directus:extension 字段,其中包含以下子字段:

  • type - 扩展的类型
  • path - 构建扩展的路径
  • source — 源入口点的路径
  • host — 一个 semver 字符串,指示扩展与 Directus 主机的哪个版本兼容

默认情况下,CLI 将使用这些字段来确定输入和输出文件路径以及应如何构建扩展。

构建你的扩展

在 Directus 可以使用您的扩展之前,必须先构建它。 如果您使用了 create-directus-extension 实用程序

为了搭建你的扩展,构建你的扩展就像运行一样简单:

bash
npm run build

The generated package.json contains a script that calls the directus-extension CLI which is part of @directus/extensions-sdk:

json
{
  "scripts": {
    "build": "directus-extension build"
  }
}

如果您更喜欢手动构建扩展,可以直接使用 directus-extension CLI 二进制文件。 --help 标志提供了有关可用选项和标志的有用信息。

在内部,CLI 使用 Rollup 将您的扩展捆绑到单个入口点。

Watch
CLI 支持在使用 --watch 标志更改文件时重建扩展。

配置 CLI

大多数情况下,按原样使用 CLI 就足够了。 但是,在某些情况下,可能需要根据您的特定需求对其进行自定义。 这可以通过在扩展包的根目录中创建一个 extension.config.js 文件来完成,其内容如下:

js
module.exports = {
  plugins: [],
}

支持的选项

  • plugins — 一系列 Rollup 插件,除了内置插件外,还将在构建扩展时使用。

CommonJS 或 ESM
通过使用 package.json 文件中的 type 字段或使用适当的文件扩展名(.mjs.cjs),配置文件可以作为 CommonJS 或 ESM 文件加载。

开发你的扩展

要了解有关开发特定类型扩展的更多信息,您可以参考其中一个单独的指南:

App Extensions

API Extensions

混合扩展

实时重新加载
处理扩展时,请尝试设置 EXTENSIONS_AUTO_RELOAD 环境变量。 这将使 API 在更改时自动重新加载扩展。

发布你的扩展

要使所有 Directus 用户都可以使用扩展,您可以将由 @directus/extensions-sdk 创建的 npm 包发布到 npm 注册表。 确保包的名称遵循包扩展的命名约定:directus-extension-<extension-name>@<scope>/directus-extension-<extension-name><extension-name> 必须替换为您的扩展名。

安装扩展

有两种安装扩展的方法。

包扩展

包扩展本质上是 npm 包。 它们可以从 npm 注册表、tarball、git 存储库或 npm 支持的任何其他方式安装。 启动时,Directus 将自动加载安装到您的 Directus 项目文件夹中的任何包扩展。

要从 npm 注册表安装扩展,只需使用 npm CLI:

bash
cd <directus-project-folder>
npm install <full-package-extension-name>

<project-folder> 必须替换为 Directus 项目文件夹。 <full-package-extension-name> 应替换为包扩展的全名(例如 directus-extension-custom)。

本地扩展

本地扩展本质上是由 directus-extension build 命令生成的文件。 可以通过将这些文件复制到特定的扩展文件夹中来安装它们。

要在本地安装扩展,您必须将输出从 dist/ 文件夹移动到项目的 ./extensions/<extension-folder>/<extension-name>/ 文件夹中。 <extension-folder> 必须替换为复数形式的扩展类型(例如接口)。 <extension-name> 应替换为您的扩展名。

可配置文件夹
构建扩展的路径以及扩展目录是可配置的,并且可能位于其他位置。