UNPKG

1.47 kBJavaScriptView Raw
1const { resolve } = require('path')
2const { existsSync } = require('fs')
3const consola = require('consola')
4
5function routerModule (moduleOptions) {
6 this.nuxt.hook('build:before', () => {
7 const defaultOptions = {
8 path: this.options.srcDir,
9 fileName: 'router.js',
10 keepDefaultRouter: false
11 }
12
13 const options = {
14 ...{},
15 ...defaultOptions,
16 ...this.options.routerModule,
17 ...moduleOptions
18 }
19
20 const routerFilePath = resolve(options.path, options.fileName)
21
22 // Check if router file path is defined
23 if (!existsSync(routerFilePath)) {
24 return consola.warn(`No \`${options.fileName}\` file found in \`${options.path}\`.`)
25 }
26
27 // Add router file path as the main template for routing
28 this.addTemplate({
29 fileName: 'router.js',
30 src: routerFilePath
31 })
32
33 // Disable parsing `pages/`
34 if (!options.keepDefaultRouter) {
35 this.nuxt.options.build.createRoutes = () => {
36 return []
37 }
38
39 return
40 }
41
42 // Put default router as .nuxt/defaultRouter.js
43 let defaultRouter
44
45 try {
46 defaultRouter = require.resolve('@nuxt/vue-app/template/router')
47 } catch (err) {
48 /* istanbul ignore next */
49 defaultRouter = require.resolve('nuxt/lib/app/router')
50 }
51
52 this.addTemplate({
53 fileName: 'defaultRouter.js',
54 src: defaultRouter
55 })
56 })
57}
58
59module.exports = routerModule
60module.exports.meta = require('../package.json')