Skip to content

File system routing for React applications base react-router, vite

License

Notifications You must be signed in to change notification settings

fourcels/vite-plugin-react-pages

Repository files navigation

vite-plugin-react-pages

File system routing for React applications base react-router, vite

Getting Started

Install

pnpm add @fourcels/vite-plugin-react-pages react-router react-router-dom

Vite config

Add to your vite.config.js:

import pages from "@fourcels/vite-plugin-react-pages";

export default {
  plugins: [
    // ...
    pages(),
  ],
};

Overview

By default a page is a React Router lazy component exported from a .tsx, .jsx, .ts, .js file in the src/pages directory.

You can access the generated routes by importing the ~pages module in your application.

import React from "react";
import ReactDOM from "react-dom/client";
import { createBrowserRouter, RouterProvider } from "react-router-dom";

import routes from "~pages";

ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
  <React.StrictMode>
    <RouterProvider router={createBrowserRouter(routes)} />
  </React.StrictMode>,
);

Type

// vite-env.d.ts
/// <reference types="@fourcels/vite-plugin-react-pages/client" />

Route Style

Example:

exmaple

# folder structure
src/pages/
β”œβ”€β”€ (dashboard)
β”‚   β”œβ”€β”€ [...slug]
β”‚   β”‚   └── page.tsx
β”‚   β”œβ”€β”€ posts
β”‚   β”‚   β”œβ”€β”€ [id]
β”‚   β”‚   β”‚   └── page.tsx
β”‚   β”‚   └── page.tsx
β”‚   β”œβ”€β”€ layout.tsx
β”‚   └── page.tsx
β”œβ”€β”€ about
β”‚   └── [[lang]]
β”‚       └── page.tsx
β”œβ”€β”€ 404.tsx
β”œβ”€β”€ layout.tsx
└── page.tsx

About

File system routing for React applications base react-router, vite

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published