README.md
October 27, 2023 ยท View on GitHub
Rehype Cloudinary Docusaurus plugin
Cloudinary offers an image CDN which can improve performance of your site. This plugin allows Docusaurus to use Cloudinary to serve optimised images.
Usage
npm i rehype-cloudinary-docusaurus
We need to reference it in our docusaurus.config.js file. We do this by adding it to the rehypePlugins array:
//@ts-check
import docusaurusCloudinaryRehypePlugin from "rehype-cloudinary-docusaurus";
const url = "https://johnnyreilly.com";
/** @type {import('@docusaurus/types').Config} */
const config = {
// ...
presets: [
[
"@docusaurus/preset-classic",
/** @type {import('@docusaurus/preset-classic').Options} */
({
// ...
blog: {
// ...
rehypePlugins: [
[
rehypeCloudinaryDocusaurus,
{
cloudName: "demo",
baseUrl: url,
},
],
],
// ...
},
// ...
}),
],
],
// ...
};
You will also need to disable the url-loader in your Docusaurus build which transforms images into base64 strings, as this will conflict with the plugin. There isn't a first class way to do this in Docusaurus at present. However by setting the environment variable WEBPACK_URL_LOADER_LIMIT to 0 you can disable it. You can see an implementation example in this pull request. It amounts to adding the cross-env package and then adding the following to your package.json:
"build": "cross-env WEBPACK_URL_LOADER_LIMIT=0 docusaurus build",
See this package in action on: https://johnnyreilly.com - the source code can be found here: https://github.com/johnnyreilly/blog.johnnyreilly.com. To read more on how this plugin came to be, see this blog post and how it was migrated to MDX 3.
Development
See .github/CONTRIBUTING.md.
Thanks! โค๏ธ๐ป
๐ This package is based on @JoshuaKGoldberg's template-typescript-node-package.