Automatically create cover images for your blog posts
npm install gridsome-plugin-blog-cover
Ensure you have a Cloudinary account.
Before using this plugin, at least one of your existing contents need to have a cover image field set. This is is because Gridsome ignores an update to a node when you pass new fields that are non-existent. In other words, ensure a cover image field can be queried in the GraphQL explorer before setting up the plugin. Cheers 🎉.
plugins: [
//...
{
use: 'gridsome-plugin-blog-cover',
options: {
typeName: 'Post',
outputDir: './content/images',
domain: 'https://example.com',
coverField: 'cover_image',
slugField: 'path',
cloudName: process.env.CLOUDINARY_CLOUD_NAME,
apiKey: process.env.CLOUDINARY_API_KEY,
apiSecret: process.env.CLOUDINARY_API_SECRET,
uploadFolder: 'covers'
}
}
]
typeName
[required]The collection name for your posts.
String
Post
outputDir
[required]The directory to generate the cover images in, this should be relative to your project's root directory
String
content/images/
domain
[required]The url of your blog site
String
https://awesomeblog.com
coverField
[required]The field on the node used for cover images
String
cover_image
slugField
[required]The field on the node that contains the sluggified title.
It is sometimes path
or slug
depending on your CMS, Inspect your Graphql data layer to confirm.
It looks like this: /title-of-the-post/
.
String
cloudName
[required]Your cloudinary cloud name
String
apiKey
[required]Your cloudinary API key
String
apiSecret
[required]Your cloudinary API secret
String
uploadFolder
The folder to use for all uploads on Cloudinary
String
blog_covers
border
Have a thin white border around the content
Boolean
true
backgroundColors
An array of Hex color codes to use for backgrounds
Array
['#30475e', '#381460', '#ba6b57', '#21243d', '#434e52']
imgHeight
A desired minimum height for the image
String
650px
imgWidth
A desired minmum width for the image
String
700px
productionOnly
In a case where your posts are increasing, generating images and uploading can take time. use this to limit it to production builds only.
Boolean
false
<page-query>
query{
posts: allPost{
edges{
node{
id
title
cover_image # or your specified cover field
}
}
}
}
</page-query>