A Vite plugin that automatically generates typed route utilities for SvelteKit applications. It creates both the route type definitions and a helper function, providing type-safe navigation with proper parameter inference, validation, and autocompletion. The plugin continuously monitors your application's route structure and keeps your route helpers in sync with zero manual maintenance.
[id]
)(group)
)# npm
npm install -D sveltekit-routes-helper
# pnpm
pnpm add -D sveltekit-routes-helper
# yarn
yarn add -D sveltekit-routes-helper
// vite.config.ts
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
import { routeGeneratorPlugin } from 'sveltekit-routes-helper';
export default defineConfig({
plugins: [
sveltekit(),
routeGeneratorPlugin({
// Optional configuration (see Configuration section)
}),
]
});
<script lang="ts">
import { routes } from '$lib/utils/routing/appRoutes';
// Simple route with no parameters
const homeUrl = routes('/');
// Route with named parameters (object style)
const userProfileUrl = routes('/user/[id]', { id: '123' });
// Route with positional parameters (array style)
const blogPostUrl = routes('/blog/[category]/[slug]', ['tech', 'sveltekit-rocks']);
</script>
<a href={homeUrl}>Home</a>
<a href={userProfileUrl}>User Profile</a>
<a href={blogPostUrl}>Blog Post</a>
The generated helper is fully typed, so you'll get:
You can customize the behavior by passing options to the plugin:
routeGeneratorPlugin({
// Path to routes directory
routesDir: 'src/routes',
// Output directory for generated files
outputDir: 'src/lib/utils/routing',
// Name of output file (without extension)
outputFilename: 'appRoutes',
// Routes to exclude (glob patterns)
exclude: ['**/api/**', '/admin/**'],
// Whether to include route metadata as comments
includeMetadata: false,
})
Option | Type | Default | Description |
---|---|---|---|
routesDir |
string |
'src/routes' |
Path to routes directory |
outputDir |
string |
'src/lib/utils/routing' |
Path to output directory |
outputFilename |
string |
'appRoutes' |
Name of output file (without extension) |
exclude |
string[] |
[] |
Routes to exclude (glob patterns) |
includeMetadata |
boolean |
false |
Whether to include route metadata comments |
You can also generate routes via the command line:
npx sveltekit-routes generate
Or add it as a script to your package.json:
{
"scripts": {
"generate-routes": "sveltekit-routes generate"
}
}
# Install dependencies
pnpm install
# Build the package
pnpm build
# Run tests
pnpm test
# Test in the dummy app
cd test/dummy-app
pnpm dev
MIT