strapi-plugin-placeholder
Version:
Generate base64 placeholders for Strapi images
93 lines (68 loc) • 1.87 kB
Markdown
Generate base64 placeholders for [Strapi](https://strapi.io/) images.
The Placeholder plugin currently supports the following formats:
- JPEG
- PNG
- GIF
- TIFF
- SVG
The Placeholder plugin is only compatible with Strapi v4.
```bash
npm install strapi-plugin-placeholder
yarn add strapi-plugin-placeholder
```
Open or create the file `config/plugins.js` and enable the plugin by adding the following snippet:
```js
module.exports = {
// ...
placeholder: {
enabled: true,
config: {
size: 10,
},
},
};
```
For more information regarding the `size` param, refer to the [Plaiceholder docs](https://plaiceholder.co/).
Create the file `database/migrations/generate-placeholders-for-existing-images.js` with the following content:
```js
'use strict';
const FILES_TABLE = 'files';
const BATCH_SIZE = 1000;
async function up(trx) {
let lastId = 0;
while (true) {
const files = await trx
.select(['id', 'url'])
.from(FILES_TABLE)
.whereNot('url', null)
.andWhereLike('mime', 'image/%')
.andWhere('placeholder', null)
.andWhere('id', '>', lastId)
.orderBy('id', 'asc')
.limit(BATCH_SIZE);
for (const file of files) {
const placeholder = await strapi
.plugin('placeholder')
.service('placeholder')
.generate(file.url);
if (placeholder)
await trx.update('placeholder', placeholder).from(FILES_TABLE).where('id', file.id);
}
if (files.length < BATCH_SIZE) {
break;
}
lastId = files[files.length - 1].id;
}
}
async function down() {}
module.exports = { up, down };
```