脚手架登录扩展名
开始开发扩展的最简单方法是使用create-directus-extension
实用程序:
npm init directus-extension
在指定了扩展名的名称之后,扩展名的类型和要使用的编程语言, 实用程序将创建一个具有建议的文件结构的文件夹以创建扩展名。
扩展文件夹结构
实用程序创建的文件夹实际上是一个NPM软件包。 它带有一些预安装的软件包,具体取决于 扩展类型和您选择的语言。 最重要的是@directus/Extensions-sdk
。 此软件包包括一个 CLI,它使您可以构建扩展名并脚手架额外的扩展名,并提供打字稿的助手 和其他公用事业。
在创建的文件夹中有一个src/
文件夹。 此文件夹包含扩展名的入口点。 如果你写其他源文件,它们应该进入此文件夹。
入口点
该入口点称为index.js
或index.ts
,具体取决于您选择的编程语言。
生成的 package.json
文件包含一个附加的 directus:extension
字段,其中包含以下子字段:
type
- 扩展的类型path
- 构建扩展的路径source
— 源入口点的路径host
— 一个 semver 字符串,指示扩展与 Directus 主机的哪个版本兼容
默认情况下,CLI 将使用这些字段来确定输入和输出文件路径以及应如何构建扩展。
构建你的扩展
在 Directus 可以使用您的扩展之前,必须先构建它。 如果您使用了 create-directus-extension
实用程序
为了搭建你的扩展,构建你的扩展就像运行一样简单:
npm run build
The generated package.json
contains a script that calls the directus-extension
CLI which is part of @directus/extensions-sdk
:
{
"scripts": {
"build": "directus-extension build"
}
}
如果您更喜欢手动构建扩展,可以直接使用 directus-extension
CLI 二进制文件。 --help
标志提供了有关可用选项和标志的有用信息。
在内部,CLI 使用 Rollup 将您的扩展捆绑到单个入口点。
Watch
CLI 支持在使用 --watch
标志更改文件时重建扩展。
配置 CLI
大多数情况下,按原样使用 CLI 就足够了。 但是,在某些情况下,可能需要根据您的特定需求对其进行自定义。 这可以通过在扩展包的根目录中创建一个 extension.config.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:
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>
应替换为您的扩展名。
可配置文件夹
构建扩展的路径以及扩展目录是可配置的,并且可能位于其他位置。