strapi-provider-upload-imagekit
Version:
ImageKit provider for Strapi CMS
108 lines (82 loc) • 3.36 kB
Markdown
## ImageKit provider for the Strapi Upload plugin
> [!IMPORTANT]
> `MAYOR` and `MINOR` versions of the provider are representing compatability with Strapi, while the `PATCH` version is used to denote changes in the provider itself.
> [!TIP]
> Consult the compatibility table if using previous versions of Strapi.
| Strapi version | Compatible provider | Note |
| -------------- | ------------------- | ---------------------------------------------------------------------------------------- |
| v3 | v0.x.x | Semver versioning |
| v4 | v4.x.x | Providers mayor/minor version equals Strapis mayor/minor version to convey compatibility |
| v5 | v5.x.x | Providers mayor/minor version equals Strapis mayor/minor version to convey compatibility |
## Installation
**1. Install via npm or yarn**
```
npm install strapi-provider-upload-imagekit --save
```
or
```
yarn add strapi-provider-upload-imagekit
```
**2. Add or modify the plugins configuration file**
Global configuration file is located in `./config/plugins.js`
Environment configuration files are located in `./config/env/{env}/plugins.js`
For more information please check the [official documentation](https://docs.strapi.io/developer-docs/latest/plugins/upload.html#using-a-provider).
**3. Define global variables**
Example `.env`:
```dotenv
IMAGEKIT_PUBLIC_KEY=ed6445336472aef39084720adcf903b9
IMAGEKIT_PRIVATE_KEY=afbca80df2ec032de664aefb3a8579b7
IMAGEKIT_URL_ENDPOINT=https://ik.imagekit.io/username
IMAGEKIT_FOLDER=/production/images
IMAGEKIT_BASE_URL=ik.imagekit.io
```
**4. Add plugin configuration**
Example `./config/plugins.js`:
```js
export default ({env}) => ({
upload: {
config: {
provider: "strapi-provider-upload-imagekit", // Community providers need to have the full package name
providerOptions: {
publicKey: env('IMAGEKIT_PUBLIC_KEY'),
privateKey: env('IMAGEKIT_PRIVATE_KEY'),
urlEndpoint: env('IMAGEKIT_URL_ENDPOINT'),
// Optional
params: {
folder: env('IMAGEKIT_FOLDER'),
}
}
}
}
});
```
**5. Setting up `strapi::security` middlewares to prevent `contentSecurityPolicy` URL blocking**
Modify `./config/middleware.js`:
```js
export default ({env}) => ([
// ...
{
name: 'strapi::security',
config: {
contentSecurityPolicy: {
useDefaults: true,
directives: {
'connect-src': ["'self'", 'https:'],
'img-src': ["'self'", 'data:', 'blob:', env('IMAGEKIT_BASE_URL')],
'media-src': ["'self'", 'data:', 'blob:', env('IMAGEKIT_BASE_URL')],
upgradeInsecureRequests: null,
},
},
},
},
]);
```
## Resources
- [MIT License](LICENSE.md)
## Links
- [Strapi website](https://strapi.io/)
- [Strapi community on Discord](https://discord.strapi.io/)
- [Strapi news on Twitter](https://twitter.com/strapijs)
## Imagekit links
- [Imagekit node library](https://www.npmjs.com/package/imagekit)
- [Imagekit API Docs](https://docs.imagekit.io/api-reference/api-introduction)