# Providers
Certain plugins can be extended via the installation and configuration of additional providers.
Providers add an extension to the core capabilities of the plugin, for example to upload media files to Rackspace instead of the local server, or using Amazon SES for emails instead of Sendmail.
For the relevant plugins, there are both official providers maintained by Strapi - discoverable via the Marketplace - and many community maintained providers available via npm (opens new window).
# Installing providers
New providers can be installed using npm
or yarn
using the following format @strapi/provider-<plugin>-<provider> --save
.
For example:
# Configuring providers
Newly installed providers are enabled and configured in the ./config/plugins.js
file. If this file does not exist you must create it.
Each provider will have different configuration settings available. Review the respective entry for that provider in the Marketplace or npm (opens new window) to learn more.
Below are example configurations for the Upload and Email plugins.
# Configuration per environment
When configuring your provider you might want to change the configuration based on the NODE_ENV
environment variable or use environment specific credentials.
You can set a specific configuration in the ./config/env/{env}/plugins.js
configuration file and it will be used to overwrite the default configuration.
# Creating providers
To implement your own custom provider you must create a Node.js module (opens new window).
The interface that must be exported depends on the plugin you are developing the provider for. Below are templates for the Upload and Email plugins:
You can review the Strapi maintained providers (opens new window) for example implementations.
After creating your new provider you can publish it to npm (opens new window) to share with the community or use it locally for your project only.
# Local providers
If you want to create your own provider without publishing it on npm you can follow these steps:
- Create a
providers
folder in your application. - Create your provider (e.g.
./providers/strapi-provider-<plugin>-<provider>
) - Then update your
package.json
to link yourstrapi-provider-<plugin>-<provider>
dependency to the local path (opens new window) of your new provider.
{
...
"dependencies": {
...
"strapi-provider-<plugin>-<provider>": "file:providers/strapi-provider-<plugin>-<provider>",
...
}
}
- Update your
./config/plugins.js
file to configure the provider. - Finally, run
yarn install
ornpm install
to install your new custom provider.