mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 09:25:06 +03:00
With `STUDIO_FRAMEWORK=tanstack`, `pnpm dev:studio-local` ran Studio in platform mode against the management API instead of the local CLI stack (`/` redirected to `/org` instead of `/project/default`). Vite selects env files by *mode* while the Next dev server selects them via `NODE_ENV=test`, so the tanstack dev server never loaded `.env.test` and the developer's `.env.local` (`NEXT_PUBLIC_IS_PLATFORM="true"`) won. The shell `NODE_ENV=test` also gets inlined into the dev client bundle by Vite, flipping `API_URL` to the vitest-only MSW host. `vite dev --mode test` isn't a viable fix: TanStack Start's dev-server plugin treats mode `test` as "running under vitest" and skips installing its SSR middleware, so every route 404s. Instead, dev keeps mode `development` and overlays the env cascade named by `MODE` on top. **Changed:** - `dev:studio-local` now also sets `MODE=test` (the same knob `build:tanstack` / `e2e:setup:selfhosted` already use) - `vite.config.ts` dev server: loads the `MODE`-named env cascade for the `NEXT_PUBLIC_*` client defines and seeds it into `process.env` for SSR, without clobbering shell-provided values (matching `serve.js` semantics, and safe against TanStack's own load-env plugin since `loadEnv` gives existing `process.env` priority) - `vite.config.ts` dev server: remaps a shell `NODE_ENV=test` to `development` so it can't be baked into the client bundle (mirrors `next dev` behavior) Platform-mode `pnpm dev:studio` sets no `MODE`, so the overlay is a no-op there. Build (`--mode test`), `serve.js`, and vitest (separate `vitest.config`) paths are unchanged. ## To test - `supabase` CLI installed, then: `STUDIO_FRAMEWORK=tanstack pnpm dev:studio-local` - Visit http://localhost:8082 — it should redirect to `/project/default` (not `/org`) and the Default Project page should load with data from the local stack (network requests go to `localhost:8082/api/platform/...`, no `api.supabase.(com|green)` calls) - `pnpm dev:studio` (platform mode, tanstack) still behaves as before — redirects to `/org` - Next path regression check: plain `pnpm dev:studio-local` (no `STUDIO_FRAMEWORK`) still works <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved local Studio development and test-mode environment handling. * Prevented test settings from being incorrectly embedded in the client application. * Ensured environment values are loaded consistently across development and test scenarios. * **Chores** * Updated the local Studio development command to explicitly use test mode. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com>
81 lines
4.0 KiB
JSON
81 lines
4.0 KiB
JSON
{
|
|
"name": "supabase",
|
|
"description": "The Postgres Development Platform.",
|
|
"version": "0.0.0",
|
|
"author": "Supabase, Inc.",
|
|
"license": "Apache-2.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"preinstall": "npx only-allow pnpm",
|
|
"build": "turbo run build",
|
|
"build:studio": "turbo run build --filter=studio",
|
|
"build:studio:docker": "docker build . -f apps/studio/Dockerfile --target production -t supabase-studio:local --build-arg NEXT_PUBLIC_STUDIO_AUTH_MODE=supabase --no-cache",
|
|
"build:design-system": "turbo run build --filter=design-system",
|
|
"build:docs": "turbo run build --filter=docs",
|
|
"clean": "turbo run clean --parallel && rimraf -G node_modules/{*,.bin,.modules.yaml} .turbo/cache",
|
|
"dev": "turbo run dev --parallel",
|
|
"dev:studio": "turbo run dev --filter=studio --parallel",
|
|
"dev:studio-local": "pnpm setup:cli && NODE_ENV=test MODE=test pnpm --prefix ./apps/studio dev",
|
|
"dev:docs": "turbo run dev --filter=docs --parallel",
|
|
"dev:www": "turbo run dev --filter=www --parallel",
|
|
"dev:design-system": "turbo run dev --filter=design-system --parallel",
|
|
"lint": "turbo run lint",
|
|
"typecheck": "turbo --continue typecheck",
|
|
"test:prettier": "SORT_IMPORTS=false prettier --config prettier.config.mjs --cache --check '{apps,packages,blocks,examples,i18n}/**/*.{js,jsx,ts,tsx,css,md,mdx,json}'",
|
|
"format": "SORT_IMPORTS=false prettier --config prettier.config.mjs --cache --write '{apps,packages,blocks,examples,i18n}/**/*.{js,jsx,ts,tsx,css,md,mdx,json}'",
|
|
"test:docs": "turbo run test --filter=docs",
|
|
"test:ui": "turbo run test --filter=ui",
|
|
"test:ui-patterns": "turbo run test --filter=ui-patterns",
|
|
"test:studio": "turbo run test --filter=studio",
|
|
"test:studio:watch": "turbo run test --filter=studio -- watch",
|
|
"e2e:setup:cli": "supabase stop --all --no-backup --workdir ./e2e/studio; supabase start --exclude studio,mailpit --workdir ./e2e/studio && supabase status --output json --workdir ./e2e/studio > keys.json && node scripts/generateLocalEnv.js",
|
|
"e2e:setup:selfhosted": "SKIP_ASSET_UPLOAD=1 pnpm e2e:setup:cli && NODE_ENV=test MODE=test NODE_OPTIONS=\"--max-old-space-size=4096\" pnpm run build:studio && NODE_ENV=test MODE=test pnpm --prefix ./apps/studio start",
|
|
"e2e:setup:selfhosted:start-studio": "SKIP_ASSET_UPLOAD=1 NODE_ENV=test MODE=test pnpm --prefix ./apps/studio start",
|
|
"e2e:setup:platform": "SKIP_ASSET_UPLOAD=1 NODE_OPTIONS=\"--max-old-space-size=4096\" pnpm run build:studio && pnpm --prefix ./apps/studio start",
|
|
"e2e": "pnpm --prefix e2e/studio run e2e",
|
|
"e2e:ui": "pnpm --prefix e2e/studio run e2e:ui",
|
|
"perf:kong": "ab -t 5 -c 20 -T application/json http://localhost:8000/",
|
|
"perf:meta": "ab -t 5 -c 20 -T application/json http://localhost:5555/tables",
|
|
"setup:cli": "supabase start -x studio && supabase status --output json > keys.json && node scripts/generateLocalEnv.js",
|
|
"generate:types": "supabase gen types typescript --local > ./supabase/functions/common/database-types.ts",
|
|
"api:codegen": "cd packages/api-types && pnpm run codegen",
|
|
"knip": "pnpx knip@~5.50.0",
|
|
"authorize-vercel-deploys": "tsx scripts/authorizeVercelDeploys.ts"
|
|
},
|
|
"devDependencies": {
|
|
"@aws-sdk/client-secrets-manager": "^3.1041.0",
|
|
"@ianvs/prettier-plugin-sort-imports": "^4.7.0",
|
|
"@types/node": "catalog:",
|
|
"eslint": "^9.0.0",
|
|
"jsdom": "^28.1.0",
|
|
"prettier": "^3.8.0",
|
|
"prettier-plugin-sql-cst": "^0.18.0",
|
|
"rimraf": "^6.0.0",
|
|
"supabase": "^2.76.10",
|
|
"supports-color": "^8.0.0",
|
|
"tailwindcss": "catalog:",
|
|
"tsx": "catalog:",
|
|
"turbo": "2.9.14",
|
|
"@typescript/native": "catalog:",
|
|
"typescript": "catalog:",
|
|
"zod": "catalog:"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/supabase/supabase.git"
|
|
},
|
|
"engines": {
|
|
"pnpm": "10.24",
|
|
"node": ">=22"
|
|
},
|
|
"keywords": [
|
|
"postgres",
|
|
"firebase",
|
|
"storage",
|
|
"functions",
|
|
"database",
|
|
"auth"
|
|
],
|
|
"packageManager": "pnpm@10.24.0"
|
|
}
|