farm-plugin-vue3-pagerouter
v0.1.2
Published
FarmFE plugin: file-based routing for Vue 3 — scans pages dir, generates vue-router config with HMR support
Downloads
388
Maintainers
Readme
farm-plugin-vue3-pagerouter
File-based routing for Vue 3 + FarmFE. Scans a pages directory, parses .vue SFCs via the core-ast-ts plugin system, generates vue-router 4 config as a virtual module with HMR support.
Install
npm install farm-plugin-vue3-pagerouterDependencies: This plugin uses core-ast-ts with core-ast-ts-plugin-vue3 internally to parse Vue SFCs. They are installed automatically as dependencies — no extra setup needed.
How Vue SFC parsing works
This plugin does not depend on @vue/compiler-sfc directly. Instead, it uses the core-ast-ts plugin system:
// Internal usage (you don't need to write this)
import { coreAst } from 'core-ast-ts'
import vue3 from 'core-ast-ts-plugin-vue3'
const ast = coreAst({ plugins: [vue3()] })
const { ast: program, meta } = ast.get('App.vue', source)
// meta.sfcDescriptor — full Vue SFC descriptor
// meta.componentName — derived from filename
// meta.isSetup — whether <script setup> is usedWhy? This keeps @vue/compiler-sfc out of this package's direct dependencies. The heavy parser lives in core-ast-ts-plugin-vue3, while core-ast-ts provides the unified cache and plugin registry. If core-ast-ts-plugin-vue3 is missing, a clear error is thrown with install instructions.
Usage
import vue3PageRouter from 'farm-plugin-vue3-pagerouter'
export default {
plugins: [
vue3PageRouter({ pagesDir: 'src/pages' }),
],
}In your app entry:
import { createApp } from 'vue'
import { createAppRouter } from 'virtual:farm-plugin-vue3-pagerouter'
import App from './App.vue'
const app = createApp(App)
app.use(createAppRouter())
app.mount('#app')Route Conventions
| File | Route |
|------|-------|
| src/pages/index.vue | / |
| src/pages/about.vue | /about |
| src/pages/user/[id].vue | /user/:id |
| src/pages/_layout.vue | Layout wrapper |
| src/pages/blog/_layout.vue | Nested layout for /blog/* |
API
farmPluginVue3PageRouter(options?)
pagesDir— Directory to scan, relative to project root. Default:'src/pages'
HMR
When .vue page files are added or modified, the virtual router module is automatically invalidated and regenerated. The core-ast-ts unified cache is invalidated per-file on HMR updates — each file is parsed only once between changes.
License
MIT
