-
-
Notifications
You must be signed in to change notification settings - Fork 967
routeTree generation breaks when using different root in vite config #3624
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I'm having the same issue, for now I've worked around it (somewhat) with the following Vite config (using import { defineConfig } from "vite";
import tailwindcss from "@tailwindcss/vite";
import react from "@vitejs/plugin-react";
import tsconfigPaths from "vite-tsconfig-paths";
import ViteRestart from "vite-plugin-restart";
import { TanStackRouterVite } from "@tanstack/router-plugin/vite";
export default defineConfig({
root: "src/frontend",
build: {
outDir: "../../dist",
},
plugins: [
// remove once https://github.com/TanStack/router/issues/3624 is fixed
ViteRestart({
restart: ["routes/**/*.ts(x)?"],
}),
tsconfigPaths(),
TanStackRouterVite({
target: "react",
autoCodeSplitting: true,
routesDirectory: "src/frontend/routes",
generatedRouteTree: "src/frontend/routeTree.gen.ts",
}),
tailwindcss(),
react(),
],
}); This restarts the vite process completely when any |
Found a workaround, since there seems to be bug related to the Vite root config option. Here's an example of my import path from "path"
import tailwindcss from '@tailwindcss/vite'
import react from '@vitejs/plugin-react'
import { defineConfig } from 'vite'
import { TanStackRouterVite } from '@tanstack/router-plugin/vite'
// https://vite.dev/config/
export default defineConfig({
plugins: [
TanStackRouterVite({
routesDirectory: path.resolve(process.cwd(), 'app/client/routes'),
generatedRouteTree: 'app/client/routeTree.gen.ts',
}),
react(),
tailwindcss()
],
root: 'app/client',
envDir: "../../",
publicDir: 'public',
resolve: {
alias: {
"@": path.resolve(__dirname, "./app"),
},
},
server: {
host: '127.0.0.1',
}
}) |
I am also facing this. Some additional debugging: Vite root is set as With the plugin configured as:
In https://github.com/TanStack/router/blob/main/packages/router-plugin/src/core/router-generator-plugin.ts#L66 I can observe:
Initial generation works when Vite starts, but then when files are updated the generator is not ran. If I change the plugin settings to:
Then Vite crashes at startup with
So the issue seems to stem from the routes path not being computed the same way between the router start and a file update. In the first case the Vite root path is not appended, but it is in the 2nd case. It also seems to never be prepended to A fix would probably involve unifying the behaviour here, and I would recommend always appending Vite's root path to the routes directory path and the generated route tree path for consistency. |
The docs state that the Based on this, expected behaviour with The issue seems to be that the plugin uses the Vite root, rather than the process.cwd(), here. This can be removed, and it'll give the documented behaviour. |
Which project does this relate to?
Router
Describe the bug
In my vite config, I have
root
set to"./src"
. Initially this resulted in an error from theTanStackRouterVite
plugin due to it trying to read the routes from./src/src/routes
, but I resolved this by addingroutesDirectory: "./src/routes"
andgeneratedRouteTree: "./src/routeTree.gen.ts"
to the plugin config.With this resulting setup, everything seems to work, except that when I create new route files they don't get filled with the usual boilerplate code. And for the
routeTree.gen.ts
to be updated I have to kill and restart the vite dev server.Your Example Website or App
https://stackblitz.com/edit/tanstack-router-mzkds9em?file=vite.config.js,src%2Findex.html&preset=node
Steps to Reproduce the Bug or Issue
Expected behavior
root
setting in vite configroot
setting in vite configScreenshots or Videos
No response
Platform
Additional context
No response
The text was updated successfully, but these errors were encountered: