Hot reload with next-remote-mdx in Next.js
When starting this blog I was investigating what kind of package I would you for mdx. It was a
couple of options. Next.js has their on package but it you have to place all of your posts in the
pages
-directory. Often this wouldn't be a problem but I would to have them outside and the
structure like this:
public/
pages/
posts/
├── unbalance-sound-on-mace/
│ ├── index.mdx
│ └── unbalance-sound-on-mace.png
└── blurred-image-placeholder-for-nextjs-image/
├── index.mdx
├── blurred-placeholder-animation.gif
└── next-image-blurred-placeholder.png
My choice fell on next-remote-mdx
because it felt more flexible. By making this choice I had to
make a trade off to not getting the automatic hot reload I would have get if I have chosen Next.js
own implementation. Util I found that the author of next-remote-mdx
had wrote a npm package
solving just that and lets you watch directories outside of the regular Next.js and trigger hot
reload of it's own.
They are doing by using undocumented API in Next.js so by that mean it could stop working in future
updates without notice. So it could be a good idea to lock your Next.js version in package.json
or
just keep it mind.
The solution
npm install --save-dev next-remote-watch
Update your npm script for dev to use this new package to get hot reload out of the box on changes
in specified directory, in my case ./posts
in the root.
"scripts": {
"dev": "next-remote-watch ./posts",
...
}