@nerolang/magellan
v1.2.0
Published
file-system based route
Downloads
187
Readme
@nerolang/magellan
file-system based route
Install
pnpm add @nerolang/magellan
How to use?
import { createRoutes } from '@nerolang/magellan'
const routes = createRoutes('./src/views')
Route
type Route = {
name: string;
path: string;
absolutePath: string;
lazy: string;
children?: Route[];
}
Rules
name
# views/PascalCase/index.js
# PascalCase
# views/camelCase/index.js
# CamelCase
# views/snake-case/index.js
# SnakeCase
# views/foo/bar/index.js
# FooBar
# views/index/index.js
# Index
path
# views/PascalCase/index.js
# /PascalCase
# views/camelCase/index.js
# /camelCase
# views/snake-case/index.js
# /snake-case
# views/foo/bar/index.js
# /foo/bar
# views/index/index.js
# /
lazy
# views/profile/index.lazy.js
slug
# views/detail/[id]/index.js
# /detail/:id
Options
extensions
createRoutes('./src/views', {
resolve: {
extensions: [
".tsx", ".ts", ".vue", ".jsx", ".js",
],
},
})
exclude
createRoutes('./src/views', {
rules: {
exclude: /components/,
},
})
Compile
vue
import { compile } from '@nerolang/magellan/compiler/vue'
compile(routes)
react
import { compile } from '@nerolang/magellan/compiler/react'
compile(routes, {
output: {
path: './src/router',
filename: 'routes.tsx',
},
})
custom
import { compile } from '@nerolang/magellan/compiler'
compile(routes, {
output: {
template: '',
},
})