Skip to content

Latest commit

 

History

History
164 lines (116 loc) · 3.59 KB

README.md

File metadata and controls

164 lines (116 loc) · 3.59 KB

@nuxtjs/router

npm version npm downloads Circle CI Codecov License

Nuxt module to use router.js instead of pages/ directory

📖 Release Notes

Features

Use your own router.js to handle your routes into your Nuxt.js application.

Setup

  1. Add @nuxtjs/router dependency to your project
yarn add --dev @nuxtjs/router # or npm install --save-dev @nuxtjs/router
  1. Add @nuxtjs/router to the buildModules section of nuxt.config.js

⚠️ If you are using Nuxt older than v2.9 you have to install module as a dependency (No --dev or --save-dev flags) and also use modules section in nuxt.config.js instead of buildModules.

export default {
  buildModules: [
    // Simple usage
    '@nuxtjs/router',

    // With options
    ['@nuxtjs/router', { /* module options */ }]
  ]
}

Using top level options

export default {
  buildModules: [
    '@nuxtjs/router'
  ],
  routerModule: {
    /* module options */
  }
}

If you are using SPA mode, add an index / route to generate section of nuxt.config.js:

export default {
  generate: {
    routes: [
      '/'
    ]
  }
}

Options

path

  • Type: String
  • Default: srcDir

Location of you route file.

fileName

  • Type: String
  • Default: router.js

Name of you route file.

keepDefaultRouter

  • Type: Boolean
  • Default: false

Can access the default router.

Usage

This module disable the pages/ directory into Nuxt and will use a router.js file at your srcDir directory:

components/
  my-page.vue
router.js

router.js need to export a createRouter method like this:

import Vue from 'vue'
import Router from 'vue-router'

import MyPage from '~/components/my-page'

Vue.use(Router)

export function createRouter() {
  return new Router({
    mode: 'history',
    routes: [
      {
        path: '/',
        component: MyPage
      }
    ]
  })
}

Accessing default router

If you use the module with { keepDefaultRouter: true }, you can access the default router:

⚠️ If you are using Nuxt < 2.9.0, the parameter routerOptions no available.

export function createRouter(ssrContext, createDefaultRouter, routerOptions) {
  const options = routerOptions ? routerOptions : createDefaultRouter(ssrContext).options

  return new Router({
    ...options,
    routes: fixRoutes(options.routes)
  })
}

function fixRoutes(defaultRoutes) {
  // default routes that come from `pages/`
  return defaultRoutes.filter(...).map(...)
}

License

MIT License

Copyright (c) Nuxt Community