content/guides/09.extensions/5.marketplace/1.publishing.md
Directus hosts a registry mirroring npm, with enhanced search/filtering and security features like blocking/delisting. The Directus Extensions Registry is updated every few hours, and only the latest version of an extension is available in the Marketplace.
To be discovered by the Directus Extensions Registry, your extension must be published on npm with the directus-extension keyword in the package.json file. To be listed in the Marketplace, the package.json file must also contain the following properties:
| Property | Description |
|---|---|
name | Required by npm to publish a package. |
version | Required by npm to publish a package. |
directus:extension.type | The extension type - used to categorize extensions in the Marketplace listing. |
directus:extension.host | The minimum Directus version required for the extension to run. This accepts any allowed range of versions based on semantic versioning, with the caveat that matching using the ^ pattern will be limited to the specified major version. |
If you create an extension with the create-directus-extension CLI, then these fields will be automatically populated.
The directory that is published must also contain a dist directory with the built files for your extension.
| Property | Description |
|---|---|
icon | Name of an icon from Material Icons. |
license | Your extension's license. |
description | Shown in the Marketplace extension listing. |
author | Automatically populated with your npm username. |
The extension title displayed in the extension detail page is based on your npm package name and the following processing:
directus-extension- prefix is removed, if present.Your npm package's README.md file is shown on the extension detail page. This can be updated by releasing a new version of your package to npm.
Many extension authors provide installation instructions in their README. It is recommended that you update this to include the Directus Marketplace as an installation method.
As extension detail pages are within projects, there is no global direct link to the page which allows installation. We recommend a prompt to search for the extension in the Marketplace for installation.
We encourage screenshots of App and Hybrid extensions to help users understand and evaluate an extension before installation. We allow external images to be loaded from the raw.githubusercontent.com domain inside of the extension detail page.
To include images, ensure your extension repository is in a public GitHub repository. Add images to your GitHub repository, visit the direct URL of the image, and use this reference inside your README.
If your email address is public on GitHub and matches your npm account, the Directus Extensions Registry will also include information from your GitHub profile, including profile image, name, location, bio, and links.
The Directus Marketplace will allow installation of all App extension types and sandboxed API extension types.
::callout{icon="material-symbols:menu-book-outline" color="primary" to="/guides/extensions/api-extensions/sandbox"} Learn more about sandboxed API extensions. ::
You can use the description to show potential users what your extension does in the Marketplace listing. To make the most of this placement, here are some guidelines:
Some examples of good descriptions:
Select a custom icon from Google's Material Icons library to display next to your extension title in the listing and extension detail page.
Having our own registry means we can remove items, which we will do if we are made aware that extensions are malicious or at the request of extension authors. If you wish to have an extension removed for either of these reasons, please get in touch with [email protected]