create-better-fullstack 1.4.7 → 1.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +1 -1
- package/dist/index.d.mts +3 -2
- package/dist/index.mjs +1 -1
- package/dist/{src-CISBB09-.mjs → src-DgYCaMzA.mjs} +113 -25
- package/package.json +3 -3
package/dist/cli.mjs
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -214,6 +214,7 @@ declare const router: {
|
|
|
214
214
|
none: "none";
|
|
215
215
|
"tanstack-router": "tanstack-router";
|
|
216
216
|
"react-router": "react-router";
|
|
217
|
+
"react-vite": "react-vite";
|
|
217
218
|
"tanstack-start": "tanstack-start";
|
|
218
219
|
next: "next";
|
|
219
220
|
nuxt: "nuxt";
|
|
@@ -526,7 +527,7 @@ declare const router: {
|
|
|
526
527
|
orm: "none" | "drizzle" | "prisma" | "mongoose" | "typeorm" | "kysely" | "mikroorm" | "sequelize";
|
|
527
528
|
backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
|
|
528
529
|
runtime: "none" | "bun" | "node" | "workers";
|
|
529
|
-
frontend: ("none" | "tanstack-router" | "react-router" | "tanstack-start" | "next" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
530
|
+
frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
530
531
|
addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook")[];
|
|
531
532
|
examples: ("ai" | "none" | "chat-sdk")[];
|
|
532
533
|
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
|
@@ -612,7 +613,7 @@ declare const router: {
|
|
|
612
613
|
orm: "none" | "drizzle" | "prisma" | "mongoose" | "typeorm" | "kysely" | "mikroorm" | "sequelize";
|
|
613
614
|
backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
|
|
614
615
|
runtime: "none" | "bun" | "node" | "workers";
|
|
615
|
-
frontend: ("none" | "tanstack-router" | "react-router" | "tanstack-start" | "next" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
616
|
+
frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
616
617
|
addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook")[];
|
|
617
618
|
examples: ("ai" | "none" | "chat-sdk")[];
|
|
618
619
|
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as builder, c as createVirtual, d as history, f as router, i as add, l as docs, n as TEMPLATE_COUNT, o as create, p as sponsors, r as VirtualFileSystem, s as createBtsCli, t as EMBEDDED_TEMPLATES, u as generateVirtualProject } from "./src-
|
|
2
|
+
import { a as builder, c as createVirtual, d as history, f as router, i as add, l as docs, n as TEMPLATE_COUNT, o as create, p as sponsors, r as VirtualFileSystem, s as createBtsCli, t as EMBEDDED_TEMPLATES, u as generateVirtualProject } from "./src-DgYCaMzA.mjs";
|
|
3
3
|
|
|
4
4
|
export { EMBEDDED_TEMPLATES, TEMPLATE_COUNT, VirtualFileSystem, add, builder, create, createBtsCli, createVirtual, docs, generateVirtualProject, history, router, sponsors };
|
|
@@ -122,6 +122,7 @@ const DEFAULT_CONFIG = getDefaultConfig();
|
|
|
122
122
|
const DEFAULT_UI_LIBRARY_BY_FRONTEND = {
|
|
123
123
|
"tanstack-router": "shadcn-ui",
|
|
124
124
|
"react-router": "shadcn-ui",
|
|
125
|
+
"react-vite": "shadcn-ui",
|
|
125
126
|
"tanstack-start": "shadcn-ui",
|
|
126
127
|
next: "shadcn-ui",
|
|
127
128
|
nuxt: "daisyui",
|
|
@@ -739,7 +740,7 @@ function validateApiFrontendCompatibility(api, frontends = [], astroIntegration)
|
|
|
739
740
|
suggestions: [
|
|
740
741
|
"Use --api orpc (works with all frontends)",
|
|
741
742
|
"Use --api none",
|
|
742
|
-
"Choose next, react-router, or tanstack-start"
|
|
743
|
+
"Choose next, react-router, react-vite, or tanstack-start"
|
|
743
744
|
]
|
|
744
745
|
});
|
|
745
746
|
}
|
|
@@ -824,6 +825,7 @@ function validateAddonsAgainstFrontends(addons = [], frontends = [], auth) {
|
|
|
824
825
|
}
|
|
825
826
|
function validatePaymentsCompatibility(payments, auth, _backend, frontends = []) {
|
|
826
827
|
if (!payments || payments === "none") return;
|
|
828
|
+
if (payments === "dodo" && frontends.includes("react-vite")) exitWithError("Dodo Payments are not yet supported for React + Vite projects.");
|
|
827
829
|
if (payments === "polar") {
|
|
828
830
|
if (!auth || auth === "none" || auth !== "better-auth") exitWithError("Polar payments requires Better Auth. Please use '--auth better-auth' or choose a different payments provider.");
|
|
829
831
|
const { web } = splitFrontends$1(frontends);
|
|
@@ -839,10 +841,11 @@ function validateExamplesCompatibility(examples, backend, frontend, runtime, ai)
|
|
|
839
841
|
const frontendArr = frontend ?? [];
|
|
840
842
|
const includesNuxt = frontendArr.includes("nuxt");
|
|
841
843
|
const includesSvelte = frontendArr.includes("svelte");
|
|
842
|
-
if (includesNuxt || includesSvelte) exitWithError("The 'ai' example with Convex backend only supports React-based frontends (Next.js, TanStack Router, TanStack Start, React Router). Svelte and Nuxt are not supported with Convex AI.");
|
|
844
|
+
if (includesNuxt || includesSvelte) exitWithError("The 'ai' example with Convex backend only supports React-based frontends (Next.js, TanStack Router, TanStack Start, React Router, React + Vite). Svelte and Nuxt are not supported with Convex AI.");
|
|
843
845
|
}
|
|
844
846
|
if (examplesArr.includes("chat-sdk")) {
|
|
845
847
|
const frontendArr = frontend ?? [];
|
|
848
|
+
if (frontendArr.includes("react-vite")) exitWithError("The 'chat-sdk' example is not yet supported for React + Vite projects.");
|
|
846
849
|
if (!isExampleChatSdkAllowed$1(backend, frontendArr, runtime)) {
|
|
847
850
|
if (backend === "none") exitWithError("The 'chat-sdk' example requires a backend.");
|
|
848
851
|
if (backend === "convex") exitWithError("The 'chat-sdk' example is not supported with the Convex backend in v1. Use self backend (Next.js, TanStack Start, Nuxt) or Hono with Node runtime.");
|
|
@@ -1701,7 +1704,7 @@ function uniqueValues$1(values) {
|
|
|
1701
1704
|
return Array.from(new Set(values));
|
|
1702
1705
|
}
|
|
1703
1706
|
function hasReactBasedFrontend$1(frontend) {
|
|
1704
|
-
return frontend.includes("react-router") || frontend.includes("tanstack-router") || frontend.includes("tanstack-start") || frontend.includes("next");
|
|
1707
|
+
return frontend.includes("react-router") || frontend.includes("react-vite") || frontend.includes("tanstack-router") || frontend.includes("tanstack-start") || frontend.includes("next");
|
|
1705
1708
|
}
|
|
1706
1709
|
function hasNativeFrontend$1(frontend) {
|
|
1707
1710
|
return frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles");
|
|
@@ -2140,7 +2143,7 @@ const AVAILABLE_AGENTS = [
|
|
|
2140
2143
|
}
|
|
2141
2144
|
];
|
|
2142
2145
|
function hasReactBasedFrontend(frontend) {
|
|
2143
|
-
return frontend.includes("react-router") || frontend.includes("tanstack-router") || frontend.includes("tanstack-start") || frontend.includes("next");
|
|
2146
|
+
return frontend.includes("react-router") || frontend.includes("react-vite") || frontend.includes("tanstack-router") || frontend.includes("tanstack-start") || frontend.includes("next");
|
|
2144
2147
|
}
|
|
2145
2148
|
function hasNativeFrontend(frontend) {
|
|
2146
2149
|
return frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles");
|
|
@@ -2360,7 +2363,7 @@ async function setupTauri(config) {
|
|
|
2360
2363
|
const hasSvelte = frontend.includes("svelte");
|
|
2361
2364
|
const hasNext = frontend.includes("next");
|
|
2362
2365
|
const devUrl = `http://localhost:${getLocalWebDevPort(frontend)}`;
|
|
2363
|
-
const frontendDist = hasNuxt ? "../.output/public" : hasSvelte ? "../build" : hasNext ? "../.next" : frontend.includes("react-router") ? "../build/client" : "../dist";
|
|
2366
|
+
const frontendDist = hasNuxt ? "../.output/public" : hasSvelte ? "../build" : hasNext ? "../.next" : frontend.includes("react-router") ? "../build/client" : frontend.includes("react-vite") ? "../dist" : "../dist";
|
|
2364
2367
|
const tauriArgs = [
|
|
2365
2368
|
"@tauri-apps/cli@latest",
|
|
2366
2369
|
"init",
|
|
@@ -2491,6 +2494,7 @@ function getFrameworksFromFrontend(frontend) {
|
|
|
2491
2494
|
const frameworkMap = {
|
|
2492
2495
|
"tanstack-router": "react",
|
|
2493
2496
|
"react-router": "react",
|
|
2497
|
+
"react-vite": "react",
|
|
2494
2498
|
"tanstack-start": "react",
|
|
2495
2499
|
next: "next",
|
|
2496
2500
|
nuxt: "vue",
|
|
@@ -2645,7 +2649,7 @@ async function setupWxt(config) {
|
|
|
2645
2649
|
//#region src/helpers/addons/addons-setup.ts
|
|
2646
2650
|
async function setupAddons(config) {
|
|
2647
2651
|
const { addons, frontend, projectDir } = config;
|
|
2648
|
-
const hasReactWebFrontend = frontend.includes("react-router") || frontend.includes("tanstack-router") || frontend.includes("next");
|
|
2652
|
+
const hasReactWebFrontend = frontend.includes("react-router") || frontend.includes("react-vite") || frontend.includes("tanstack-router") || frontend.includes("next");
|
|
2649
2653
|
const hasNuxtFrontend = frontend.includes("nuxt");
|
|
2650
2654
|
const hasSvelteFrontend = frontend.includes("svelte");
|
|
2651
2655
|
const hasSolidFrontend = frontend.includes("solid");
|
|
@@ -3022,6 +3026,7 @@ async function getAnimationChoice(animation, frontends) {
|
|
|
3022
3026
|
const isReact = web.some((f) => [
|
|
3023
3027
|
"tanstack-router",
|
|
3024
3028
|
"react-router",
|
|
3029
|
+
"react-vite",
|
|
3025
3030
|
"tanstack-start",
|
|
3026
3031
|
"next",
|
|
3027
3032
|
"redwood"
|
|
@@ -3753,6 +3758,7 @@ async function getFormsChoice(forms, frontends) {
|
|
|
3753
3758
|
const isReact = web.some((f) => [
|
|
3754
3759
|
"tanstack-router",
|
|
3755
3760
|
"react-router",
|
|
3761
|
+
"react-vite",
|
|
3756
3762
|
"tanstack-start",
|
|
3757
3763
|
"next",
|
|
3758
3764
|
"redwood"
|
|
@@ -3841,6 +3847,11 @@ async function getFrontendChoice(frontendOptions, backend, auth) {
|
|
|
3841
3847
|
label: "React Router",
|
|
3842
3848
|
hint: "A user‑obsessed, standards‑focused, multi‑strategy router"
|
|
3843
3849
|
},
|
|
3850
|
+
{
|
|
3851
|
+
value: "react-vite",
|
|
3852
|
+
label: "React + Vite",
|
|
3853
|
+
hint: "Client-routed React SPA powered by Vite"
|
|
3854
|
+
},
|
|
3844
3855
|
{
|
|
3845
3856
|
value: "next",
|
|
3846
3857
|
label: "Next.js",
|
|
@@ -4504,6 +4515,11 @@ async function getPythonAiChoice(pythonAi) {
|
|
|
4504
4515
|
const response = await navigableMultiselect({
|
|
4505
4516
|
message: "Select Python AI/ML frameworks",
|
|
4506
4517
|
options: [
|
|
4518
|
+
{
|
|
4519
|
+
value: "none",
|
|
4520
|
+
label: "None",
|
|
4521
|
+
hint: "No AI/ML framework"
|
|
4522
|
+
},
|
|
4507
4523
|
{
|
|
4508
4524
|
value: "langchain",
|
|
4509
4525
|
label: "LangChain",
|
|
@@ -4539,6 +4555,7 @@ async function getPythonAiChoice(pythonAi) {
|
|
|
4539
4555
|
initialValues: []
|
|
4540
4556
|
});
|
|
4541
4557
|
if (isCancel$1(response)) return exitCancelled("Operation cancelled");
|
|
4558
|
+
if (response.includes("none")) return [];
|
|
4542
4559
|
return response;
|
|
4543
4560
|
}
|
|
4544
4561
|
async function getPythonTaskQueueChoice(pythonTaskQueue) {
|
|
@@ -5248,6 +5265,7 @@ async function getStateManagementChoice(stateManagement, frontends) {
|
|
|
5248
5265
|
const isReact = web.some((f) => [
|
|
5249
5266
|
"tanstack-router",
|
|
5250
5267
|
"react-router",
|
|
5268
|
+
"react-vite",
|
|
5251
5269
|
"tanstack-start",
|
|
5252
5270
|
"next",
|
|
5253
5271
|
"redwood"
|
|
@@ -5481,6 +5499,7 @@ async function getValidationChoice(validation) {
|
|
|
5481
5499
|
const WEB_FRAMEWORKS = [
|
|
5482
5500
|
"tanstack-router",
|
|
5483
5501
|
"react-router",
|
|
5502
|
+
"react-vite",
|
|
5484
5503
|
"tanstack-start",
|
|
5485
5504
|
"next",
|
|
5486
5505
|
"nuxt",
|
|
@@ -5761,7 +5780,7 @@ async function gatherConfig(flags, projectName, projectDir, relativePath) {
|
|
|
5761
5780
|
aiDocs: () => getAiDocsChoice(flags.aiDocs),
|
|
5762
5781
|
git: () => getGitChoice(flags.git),
|
|
5763
5782
|
packageManager: ({ results }) => {
|
|
5764
|
-
if (results.ecosystem === "rust" || results.ecosystem === "python" || results.ecosystem === "go") return Promise.resolve(
|
|
5783
|
+
if (results.ecosystem === "rust" || results.ecosystem === "python" || results.ecosystem === "go") return Promise.resolve(flags.packageManager ?? getUserPkgManager());
|
|
5765
5784
|
return getPackageManagerChoice(flags.packageManager);
|
|
5766
5785
|
},
|
|
5767
5786
|
install: ({ results }) => getinstallChoice(flags.install, results.ecosystem)
|
|
@@ -5773,7 +5792,7 @@ async function gatherConfig(flags, projectName, projectDir, relativePath) {
|
|
|
5773
5792
|
frontend: result.frontend,
|
|
5774
5793
|
astroIntegration: result.astroIntegration,
|
|
5775
5794
|
uiLibrary: result.uiLibrary,
|
|
5776
|
-
...result.shadcnOptions
|
|
5795
|
+
...result.shadcnOptions,
|
|
5777
5796
|
cssFramework: result.cssFramework,
|
|
5778
5797
|
backend: result.backend,
|
|
5779
5798
|
runtime: result.runtime,
|
|
@@ -5986,7 +6005,34 @@ function displayConfig(config) {
|
|
|
5986
6005
|
|
|
5987
6006
|
//#endregion
|
|
5988
6007
|
//#region src/utils/generate-reproducible-command.ts
|
|
5989
|
-
function
|
|
6008
|
+
function getBaseCommand(packageManager) {
|
|
6009
|
+
switch (packageManager) {
|
|
6010
|
+
case "bun": return "bun create better-fullstack@latest";
|
|
6011
|
+
case "pnpm": return "pnpm create better-fullstack@latest";
|
|
6012
|
+
case "npm":
|
|
6013
|
+
default: return "npx create-better-fullstack@latest";
|
|
6014
|
+
}
|
|
6015
|
+
}
|
|
6016
|
+
function formatArrayFlag(flag, values) {
|
|
6017
|
+
const normalizedValues = values.filter((value) => value !== "none");
|
|
6018
|
+
if (normalizedValues.length === 0) return `--${flag} none`;
|
|
6019
|
+
return `--${flag} ${normalizedValues.join(" ")}`;
|
|
6020
|
+
}
|
|
6021
|
+
function appendCommonFlags(flags, config) {
|
|
6022
|
+
if (config.aiDocs && config.aiDocs.length > 0) flags.push(formatArrayFlag("ai-docs", config.aiDocs));
|
|
6023
|
+
else flags.push("--ai-docs none");
|
|
6024
|
+
flags.push(config.git ? "--git" : "--no-git");
|
|
6025
|
+
flags.push(`--package-manager ${config.packageManager}`);
|
|
6026
|
+
flags.push(config.install ? "--install" : "--no-install");
|
|
6027
|
+
}
|
|
6028
|
+
function appendSharedNonTypeScriptFlags(flags, config) {
|
|
6029
|
+
flags.push(formatArrayFlag("addons", config.addons));
|
|
6030
|
+
flags.push(formatArrayFlag("examples", config.examples));
|
|
6031
|
+
flags.push(`--db-setup ${config.dbSetup}`);
|
|
6032
|
+
flags.push(`--web-deploy ${config.webDeploy}`);
|
|
6033
|
+
flags.push(`--server-deploy ${config.serverDeploy}`);
|
|
6034
|
+
}
|
|
6035
|
+
function getTypeScriptFlags(config) {
|
|
5990
6036
|
const flags = [];
|
|
5991
6037
|
if (config.frontend && config.frontend.length > 0) flags.push(`--frontend ${config.frontend.join(" ")}`);
|
|
5992
6038
|
else flags.push("--frontend none");
|
|
@@ -6032,21 +6078,63 @@ function generateReproducibleCommand(config) {
|
|
|
6032
6078
|
flags.push(`--db-setup ${config.dbSetup}`);
|
|
6033
6079
|
flags.push(`--web-deploy ${config.webDeploy}`);
|
|
6034
6080
|
flags.push(`--server-deploy ${config.serverDeploy}`);
|
|
6035
|
-
|
|
6036
|
-
|
|
6037
|
-
|
|
6038
|
-
|
|
6039
|
-
|
|
6040
|
-
flags.push(config.
|
|
6041
|
-
flags.push(`--
|
|
6042
|
-
flags.push(config.
|
|
6043
|
-
|
|
6044
|
-
|
|
6045
|
-
|
|
6046
|
-
|
|
6047
|
-
|
|
6048
|
-
|
|
6049
|
-
|
|
6081
|
+
appendCommonFlags(flags, config);
|
|
6082
|
+
return flags;
|
|
6083
|
+
}
|
|
6084
|
+
function getRustFlags(config) {
|
|
6085
|
+
const flags = ["--ecosystem rust"];
|
|
6086
|
+
flags.push(`--rust-web-framework ${config.rustWebFramework}`);
|
|
6087
|
+
flags.push(`--rust-frontend ${config.rustFrontend}`);
|
|
6088
|
+
flags.push(`--rust-orm ${config.rustOrm}`);
|
|
6089
|
+
flags.push(`--rust-api ${config.rustApi}`);
|
|
6090
|
+
flags.push(`--rust-cli ${config.rustCli}`);
|
|
6091
|
+
flags.push(formatArrayFlag("rust-libraries", config.rustLibraries));
|
|
6092
|
+
appendSharedNonTypeScriptFlags(flags, config);
|
|
6093
|
+
appendCommonFlags(flags, config);
|
|
6094
|
+
return flags;
|
|
6095
|
+
}
|
|
6096
|
+
function getPythonFlags(config) {
|
|
6097
|
+
const flags = ["--ecosystem python"];
|
|
6098
|
+
flags.push(`--python-web-framework ${config.pythonWebFramework}`);
|
|
6099
|
+
flags.push(`--python-orm ${config.pythonOrm}`);
|
|
6100
|
+
flags.push(`--python-validation ${config.pythonValidation}`);
|
|
6101
|
+
flags.push(formatArrayFlag("python-ai", config.pythonAi));
|
|
6102
|
+
flags.push(`--python-task-queue ${config.pythonTaskQueue}`);
|
|
6103
|
+
flags.push(`--python-quality ${config.pythonQuality}`);
|
|
6104
|
+
appendSharedNonTypeScriptFlags(flags, config);
|
|
6105
|
+
appendCommonFlags(flags, config);
|
|
6106
|
+
return flags;
|
|
6107
|
+
}
|
|
6108
|
+
function getGoFlags(config) {
|
|
6109
|
+
const flags = ["--ecosystem go"];
|
|
6110
|
+
flags.push(`--go-web-framework ${config.goWebFramework}`);
|
|
6111
|
+
flags.push(`--go-orm ${config.goOrm}`);
|
|
6112
|
+
flags.push(`--go-api ${config.goApi}`);
|
|
6113
|
+
flags.push(`--go-cli ${config.goCli}`);
|
|
6114
|
+
flags.push(`--go-logging ${config.goLogging}`);
|
|
6115
|
+
flags.push(`--auth ${config.auth}`);
|
|
6116
|
+
appendSharedNonTypeScriptFlags(flags, config);
|
|
6117
|
+
appendCommonFlags(flags, config);
|
|
6118
|
+
return flags;
|
|
6119
|
+
}
|
|
6120
|
+
function generateReproducibleCommand(config) {
|
|
6121
|
+
let flags;
|
|
6122
|
+
switch (config.ecosystem) {
|
|
6123
|
+
case "rust":
|
|
6124
|
+
flags = getRustFlags(config);
|
|
6125
|
+
break;
|
|
6126
|
+
case "python":
|
|
6127
|
+
flags = getPythonFlags(config);
|
|
6128
|
+
break;
|
|
6129
|
+
case "go":
|
|
6130
|
+
flags = getGoFlags(config);
|
|
6131
|
+
break;
|
|
6132
|
+
case "typescript":
|
|
6133
|
+
default:
|
|
6134
|
+
flags = getTypeScriptFlags(config);
|
|
6135
|
+
break;
|
|
6136
|
+
}
|
|
6137
|
+
return `${getBaseCommand(config.packageManager)}${config.relativePath ? ` ${config.relativePath}` : ""} ${flags.join(" ")}`;
|
|
6050
6138
|
}
|
|
6051
6139
|
|
|
6052
6140
|
//#endregion
|
|
@@ -8110,7 +8198,7 @@ async function displayPostInstallInstructions(config) {
|
|
|
8110
8198
|
const lefthookInstructions = hasLefthook ? getLefthookInstructions(packageManager) : "";
|
|
8111
8199
|
const lintingInstructions = hasGitHooksOrLinting ? getLintingInstructions(runCmd) : "";
|
|
8112
8200
|
const nativeInstructions = (frontend?.includes("native-bare") || frontend?.includes("native-uniwind") || frontend?.includes("native-unistyles")) && backend !== "none" ? getNativeInstructions(isConvex, isBackendSelf, frontend || [], runCmd) : "";
|
|
8113
|
-
const pwaInstructions = addons?.includes("pwa") && frontend?.includes("react-router") ? getPwaInstructions() : "";
|
|
8201
|
+
const pwaInstructions = addons?.includes("pwa") && (frontend?.includes("react-router") || frontend?.includes("react-vite")) ? getPwaInstructions() : "";
|
|
8114
8202
|
const starlightInstructions = addons?.includes("starlight") ? getStarlightInstructions(runCmd) : "";
|
|
8115
8203
|
const clerkInstructions = config.auth === "clerk" ? getClerkInstructions(config.backend, config.frontend ?? []) : "";
|
|
8116
8204
|
const polarInstructions = config.payments === "polar" && config.auth === "better-auth" ? getPolarInstructions(backend) : "";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-better-fullstack",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.9",
|
|
4
4
|
"description": "A CLI-first toolkit for building Full Stack applications. Skip the configuration. Ship the code.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"better-auth",
|
|
@@ -76,8 +76,8 @@
|
|
|
76
76
|
"prepublishOnly": "npm run build"
|
|
77
77
|
},
|
|
78
78
|
"dependencies": {
|
|
79
|
-
"@better-fullstack/template-generator": "^1.4.
|
|
80
|
-
"@better-fullstack/types": "^1.4.
|
|
79
|
+
"@better-fullstack/template-generator": "^1.4.9",
|
|
80
|
+
"@better-fullstack/types": "^1.4.9",
|
|
81
81
|
"@clack/core": "^0.5.0",
|
|
82
82
|
"@clack/prompts": "^1.0.0-alpha.8",
|
|
83
83
|
"@orpc/server": "^1.13.0",
|