Install a local extension

Follow these steps in order to install an extension from a local source

First of all, download the extension

Create a packages/ directory inside of your theme's root.

Put the extension into the packages/<package name> directory. Make sure that you have a packages/<package name>/package.json file present alongside all the other extension's contents, that means that you have unpacked the extension correctly.

.
├── 📁 packages/
│   ├── 📁 @somebody/        # All extensions of this scope will be in this dir 
│   │   └── 📁 extension1/   # This extension is a scoped package
│   │       ├── ...
│   │       └── package.json
│   └── 📁 extension2/       # This extension is not a scoped package
│       ├── ...
│       └── package.json
├── 📁 src
└── package.json

Add the following scripts to the scripts section of your theme's package.json file. This is necessary for your package to be automatically symlinked into the node_modules directory of your theme, each time after any manipulation with dependencies

{
    "scripts": {
        "postinstall": "nextjs-scripts link",
        "postupdate": "nextjs-scripts link"
    }
}

Add the extension to the dependencies of your theme, as follows:

./package.json
{
    "dependencies": {
        "@somebody/extension1": "file:./packages/@somebody/extension1".
        "extension2": "file:./packages/extension2".
    }
}

Enable the extension:

package.json
{
    "mosaic": {
        "extensions": {
            "@somebody/extension1": true,
            "extension2": false
        }
    }
}

Update the symlinks by running the following command

npm run postinstall

Last updated

Was this helpful?