@nerolang/magellan
v1.3.1
Published
file-system based route
Readme
@nerolang/magellan
file-system based route
Install
pnpm add @nerolang/magellanHow to use?
import { createRoutes } from '@nerolang/magellan'
const routes = createRoutes('./src/views')Route
type Route = {
name: string;
path: string;
absolutePath: string;
meta?: Record<string, boolean>;
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
# Indexpath
# 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.jsslug
# views/detail/[id]/index.js
# /detail/:idmeta
# views/index.auth.lazy.js
{
meta: {
auth: true,
lazy: true
}
}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: '',
},
})