# Bundling Extensions

> Bundles are a way to group extensions together as a single distributable package.

Bundles are a way to group extensions together as a single distributable package. They can be used when extensions should be installed together or to combine and share dependencies.

## Creating a Bundle

When creating an extension, select a `bundle` type. This will create a new empty bundle.

## Entries

In your bundle's `package.json` file, the `directus:extension` object has an `entries` array that describes all of the items contained within the bundle. Entries in a bundle are located within a `src` directory in the bundle.

```json
{
    "type": "interface",
    "name": "my-interface",
    "source": "src/my-interface/index.ts"
}
```

## Partial

For bundle type extensions `package.json` file, the `directus:extension` object supports an additional optional `partial` property. This boolean property controls whether the bundles entries can be individually disabled. This is enabled by default.

## Add an Extension

### Create New

1. Navigate to your bundle extension directory in your terminal.
2. Use the `npm run add` command and select an extension type.

This will create a boilerplate extension.

### Add Existing

1. Move your extension directory within your bundle's `src` directory.
2. Add an entry to the bundle's `package.json`.

## Remove an Extension

1. Delete the extension directory from your `src` directory.
2. Remove the entry from your `package.json`.
