Remix Route Configuration
My blog posts were originally organized by year in both the URL and file system paths (e.g. /2024/remix-route-configs). While I wanted to keep this structure for consistency, I also wanted to leverage the new V2 routing features. After some digging, I found a solution that achieves both goals, as detailed below.
Route Directory Structure
Manual Route Configuration Docs
Remix additionally allows for setting manual routes via Vite config.
There are times when the provided convention might not align with specific project requirements or a developer's preferences. In such cases, Remix allows for manual route configuration via vite.config.ts.
The Remix defineRoutes
function in vite.config.ts
can be used to load custom routes.
A function for defining custom routes, in addition to those already defined using the filesystem convention in app/routes. Both sets of routes will be merged.
Vite Configuration Sample
I have a list of links and paths that get autopopulated in defineRoutes
.
Sample Route JSON
[
{
"link": "/blog/posts/2024/remix-routes",
"path": "routes/2024/remix-routes.mdx"
}
]
Sample defineConfig in vite.config.ts
export default defineConfig({
plugins: [
remix({
routes(defineRoutes) {
return defineRoutes((route) => {
for (const r of routes) {
if (r.path.length > 0) {
route(r.link, r.path);
}
}
});
}
})
]
});