@railcode/vite
v0.1.0
Published
Railcode build preset for TanStack apps. Wraps @cloudflare/vite-plugin so an app never imports Cloudflare, installs a Cloudflare package, or ships a wrangler config.
Readme
@railcode/vite
The Railcode build preset for TanStack apps. It wraps
@cloudflare/vite-plugin
so an app never imports Cloudflare, installs a Cloudflare package, or ships a
wrangler config.
// vite.config.ts
import { defineConfig } from "vite";
import railcode from "@railcode/vite";
import { tanstackStart } from "@tanstack/react-start/plugin/vite";
import viteReact from "@vitejs/plugin-react";
export default defineConfig({
plugins: [railcode(), tanstackStart({ spa: { enabled: true } }), viteReact()],
});What it does
- Runs the worker in the
ssrVite environment — the server code is built for the Railcode worker runtime. - Generates the
wranglerconfig in the background — from Railcode-owned constants (worker name, entry, compatibility date + flags). The app has nowrangler.jsoncto write or commit. The file is written undernode_modules/.railcode/(always gitignored, rewritten on each run) and the Cloudflare plugin reads it through itsconfigPathoption. - Forces one self-contained module (
inlineDynamicImports) — the single worker the platform deploys. A code-split worker (which would crash at invocation) is impossible, because the setting lives here, not in the app.
The runtime is Railcode's, not yours
The compatibility date and flags are platform values. They match the backend deploy side, so a worker behaves the same in local dev and when deployed. An app does not choose the runtime.
If Railcode later moves to a different runtime, these change in one place — your app does not change.
Options (escape hatches — rarely needed)
| Option | Default | Purpose |
| --- | --- | --- |
| name | "railcode-app" | Local-dev worker name (cosmetic, local only). |
| main | TanStack Start server entry | The worker entry module. |
| compatibilityDate | platform value | Override the local compatibility date. |
| compatibilityFlags | platform value | Override the local compatibility flags. |
Leave compatibilityDate / compatibilityFlags unset so local dev matches what
the platform deploys.
