Files
directus/docs/extensions/installing-extensions.md
Kevin Lewis 4073324d3b Marketplace Documentation (#21458)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-03-02 14:50:29 +00:00

4.1 KiB

contributors, description
contributors description
Esther Agbaje, Kevin Lewis Discover how to install extensions to your Directus project.
<script setup lang="ts"> import { data as packages } from '@/data/packages.data.js'; </script>

Installing Extensions

There are three ways to install extensions to your Directus project:

  1. Installing via the Directus Marketplace
  2. Installing via the npm Registry
  3. Installing via the Extensions Directory

Installing via the Directus Marketplace

Extensions in the Directus Marketplace Registry are made available via the Marketplace section in the Settings Module.

By default, App Extensions and Sandboxed Extensions are available from the Marketplace in all Directus projects (Directus Professional and Enterprise Cloud, and self-hosted).

Installing via the npm Registry

Extensions can be installed in a Directus project from the npm registry. Before you begin, ensure you have a self-hosted instance of Directus via Docker installed on your system.

1. Modify docker-compose.yml

Open the docker-compose.yml file of your project and replace the image option with a build section:

image: directus/directus:{{ packages.directus.version.major }}.x.y // [!code --]
build: // [!code ++]
  context: ./ // [!code ++]

This allows you to build a customized Docker Image with the added extensions.

2. Create a Dockerfile

At the root of your project, create a Dockerfile if one doesn't already exist and add the following:

FROM directus/directus:{{ packages.directus.version.major }}.x.y

USER root
RUN corepack enable
USER node

RUN pnpm install directus-extension-package-name

::: tip Extension Name

Remember to replace directus-extension-package-name with the name of the extension's npm package.

:::

3. Build the Docker Image

Build your Docker image:

docker compose build

4. Start the Docker Container

Start your Docker container:

docker compose up

On startup, you'd see that Directus will automatically load any extension installed in the previous steps.

Installing via the Extensions Directory

To locally install extensions, copy the files generated by the directus-extension build command into the extensions folder located at the root of your Directus project.

::: warning Configurable Folders

The path to the built extension as well as the extensions directory are configurable and may be located elsewhere.

:::

Before you begin, ensure you have a self-hosted instance of Directus via Docker installed on your system.

1. Create an Extensions Folder

At the root of your project, create an extensions folder if one doesn't already exist to house your extensions.

2. Add your new extension into the extensions folder

Move the package.json file along with the output from the dist/ folder into a new folder in the extensions folder you created earlier.

Your folder structure should look like this:

extensions/
  <extension-name>/
    dist/
      index.js
    package.json
  ...

3. Update Docker Compose File

Open your docker-compose.yml file and add a volume to mount your extensions folder into the Docker container:

volumes:
  - ./extensions:/directus/extensions/

4. Start the Docker Container

Start your Docker container:

docker compose up

You should see that your extension has been successfully loaded into the Docker container. Now, go ahead to customize your extension by making changes to the src folder within your extension directory.

::: tip Automatically Reload Extensions

To automatically reload extensions every time you make a change, without having to restart Directus, in your docker-compose.yml file, set EXTENSIONS_AUTO_RELOAD=true.

:::