/rehype-cloudinary-docusaurus

Cloudinary offers an image CDN which can improve performance of your site. This plugin allows Docusaurus to use Cloudinary to serve optimised images.

Primary LanguageTypeScriptMIT LicenseMIT

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.

rehype-cloudinary-docusaurus version on npm Downloads on npm Build Contributor Covenant License: MIT Sponsor: On GitHub Style: Prettier TypeScript: Strict

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.