Skip to content

Commit 83ca348

Browse files
committed
Reintroduce basename validation, remove unused vite-node context
1 parent 03eb216 commit 83ca348

File tree

2 files changed

+22
-25
lines changed

2 files changed

+22
-25
lines changed

integration/vite-basename-test.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ test.describe("Vite base / React Router basename / Vite dev", () => {
154154
}
155155
}
156156

157-
test.afterAll(async () => await stop());
157+
test.afterAll(async () => await stop?.());
158158

159159
test("works when the base and basename are the same", async ({ page }) => {
160160
await setup({ base: "/mybase/", basename: "/mybase/" });
@@ -166,8 +166,7 @@ test.describe("Vite base / React Router basename / Vite dev", () => {
166166
await workflowDev({ page, cwd, port, basename: "/mybase/app/" });
167167
});
168168

169-
// TODO: Fix this
170-
test.skip("errors if basename does not start with base", async ({ page }) => {
169+
test("errors if basename does not start with base", async ({ page }) => {
171170
await setup({
172171
base: "/mybase/",
173172
basename: "/notmybase/",

packages/react-router-dev/vite/plugin.ts

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ import {
4949
} from "./config";
5050
import { ssrExternals } from "./ssr-externals";
5151
import * as WithProps from "./with-props";
52-
import * as ViteNode from "./vite-node";
5352

5453
export async function resolveViteConfig({
5554
configFile,
@@ -435,28 +434,22 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
435434
let viteConfig: Vite.ResolvedConfig | undefined;
436435
let cssModulesManifest: Record<string, string> = {};
437436
let viteChildCompiler: Vite.ViteDevServer | null = null;
438-
let routesViteNodeContext: ViteNode.Context | null = null;
437+
let reactRouterConfigLoader: Awaited<ReturnType<typeof createConfigLoader>>;
438+
let logger: Vite.Logger;
439+
let firstLoad = true;
439440

440441
// This is initialized by `updatePluginContext` during Vite's `config`
441442
// hook, so most of the code can assume this defined without null check.
442443
// During dev, `updatePluginContext` is called again on every config file
443444
// change or route file addition/removal.
444445
let ctx: ReactRouterPluginContext;
445446

446-
let reactRouterConfigLoader: Awaited<ReturnType<typeof createConfigLoader>>;
447-
448-
let logger: Vite.Logger;
449-
450-
let firstLoad = true;
451-
452447
/** Mutates `ctx` as a side-effect */
453448
let updatePluginContext = async ({
454449
routeConfigChanged = false,
455450
}: {
456451
routeConfigChanged?: boolean;
457452
} = {}): Promise<void> => {
458-
invariant(routesViteNodeContext);
459-
460453
let reactRouterConfig: ResolvedReactRouterConfig;
461454
let reactRouterConfigResult = await reactRouterConfigLoader.getConfig();
462455

@@ -476,6 +469,23 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
476469
});
477470

478471
let publicPath = resolvePublicPath(viteUserConfig);
472+
473+
if (
474+
reactRouterConfig.basename !== "/" &&
475+
viteCommand === "serve" &&
476+
!viteUserConfig.server?.middlewareMode &&
477+
!reactRouterConfig.basename.startsWith(publicPath)
478+
) {
479+
logger.error(
480+
colors.red(
481+
"When using the React Router `basename` and the Vite `base` config, " +
482+
"the `basename` config must begin with `base` for the default " +
483+
"Vite dev server."
484+
)
485+
);
486+
process.exit(1);
487+
}
488+
479489
let viteManifestEnabled = viteUserConfig.build?.manifest === true;
480490

481491
let ssrBuildCtx: ReactRouterPluginSsrBuildContext =
@@ -772,17 +782,6 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
772782
command: viteCommand === "serve" ? "dev" : "build",
773783
});
774784

775-
routesViteNodeContext = await ViteNode.createContext({
776-
root: viteUserConfig.root,
777-
mode: viteConfigEnv.mode,
778-
server: {
779-
watch: viteCommand === "build" ? null : undefined,
780-
},
781-
ssr: {
782-
external: ssrExternals,
783-
},
784-
});
785-
786785
await updatePluginContext();
787786

788787
Object.assign(
@@ -1243,7 +1242,6 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
12431242
},
12441243
async buildEnd() {
12451244
await viteChildCompiler?.close();
1246-
await routesViteNodeContext?.devServer?.close();
12471245
await reactRouterConfigLoader.close();
12481246
},
12491247
},

0 commit comments

Comments
 (0)