create-better-t-stack 3.21.0 → 3.21.2
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/README.md +21 -18
- package/dist/cli.mjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{src-BqpeME-D.mjs → src-BDjiIkCi.mjs} +13 -2
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -53,24 +53,27 @@ Usage: create-better-t-stack [project-directory] [options]
|
|
|
53
53
|
Options:
|
|
54
54
|
-V, --version Output the version number
|
|
55
55
|
-y, --yes Use default configuration
|
|
56
|
+
--template <type> Use a template (mern, pern, t3, uniwind, none)
|
|
56
57
|
--database <type> Database type (none, sqlite, postgres, mysql, mongodb)
|
|
57
58
|
--orm <type> ORM type (none, drizzle, prisma, mongoose)
|
|
58
|
-
--auth
|
|
59
|
-
--
|
|
60
|
-
--frontend <types...> Frontend types (tanstack-router, react-router, tanstack-start, next, nuxt, svelte, solid, native-bare, native-uniwind, native-unistyles, none)
|
|
61
|
-
--addons <types...> Additional addons (pwa, tauri, starlight, biome, lefthook, husky, turborepo, fumadocs, ultracite, oxlint, none)
|
|
59
|
+
--auth <provider> Authentication (better-auth, clerk, none)
|
|
60
|
+
--payments <provider> Payments provider (polar, none)
|
|
61
|
+
--frontend <types...> Frontend types (tanstack-router, react-router, tanstack-start, next, nuxt, svelte, solid, astro, native-bare, native-uniwind, native-unistyles, none)
|
|
62
|
+
--addons <types...> Additional addons (pwa, tauri, starlight, biome, lefthook, husky, ruler, mcp, turborepo, fumadocs, ultracite, oxlint, opentui, wxt, skills, none)
|
|
62
63
|
--examples <types...> Examples to include (todo, ai, none)
|
|
63
64
|
--git Initialize git repository
|
|
64
65
|
--no-git Skip git initialization
|
|
65
66
|
--package-manager <pm> Package manager (npm, pnpm, bun)
|
|
66
67
|
--install Install dependencies
|
|
67
68
|
--no-install Skip installing dependencies
|
|
68
|
-
--db-setup <setup> Database setup (turso, d1, neon, supabase, prisma-postgres, mongodb-atlas, docker, none)
|
|
69
|
-
--web-deploy <setup> Web deployment (
|
|
70
|
-
--server-deploy <setup> Server deployment (
|
|
71
|
-
--backend <framework> Backend framework (hono, express,
|
|
69
|
+
--db-setup <setup> Database setup (turso, d1, neon, supabase, prisma-postgres, planetscale, mongodb-atlas, docker, none)
|
|
70
|
+
--web-deploy <setup> Web deployment (cloudflare, none)
|
|
71
|
+
--server-deploy <setup> Server deployment (cloudflare, none)
|
|
72
|
+
--backend <framework> Backend framework (hono, express, fastify, elysia, convex, self, none)
|
|
72
73
|
--runtime <runtime> Runtime (bun, node, workers, none)
|
|
73
74
|
--api <type> API type (trpc, orpc, none)
|
|
75
|
+
--directory-conflict <strategy> Directory strategy (merge, overwrite, increment, error)
|
|
76
|
+
--manual-db Skip automatic database setup prompts
|
|
74
77
|
-h, --help Display help
|
|
75
78
|
```
|
|
76
79
|
|
|
@@ -108,7 +111,7 @@ npx create-better-t-stack --yes
|
|
|
108
111
|
Create a project with specific options:
|
|
109
112
|
|
|
110
113
|
```bash
|
|
111
|
-
npx create-better-t-stack --database postgres --orm drizzle --auth --addons pwa biome
|
|
114
|
+
npx create-better-t-stack --database postgres --orm drizzle --auth better-auth --addons pwa biome
|
|
112
115
|
```
|
|
113
116
|
|
|
114
117
|
Create a project with Elysia backend and Node.js runtime:
|
|
@@ -138,7 +141,7 @@ npx create-better-t-stack --database sqlite --orm drizzle --db-setup turso
|
|
|
138
141
|
Create a project with Supabase PostgreSQL setup:
|
|
139
142
|
|
|
140
143
|
```bash
|
|
141
|
-
npx create-better-t-stack --database postgres --orm drizzle --db-setup supabase --auth
|
|
144
|
+
npx create-better-t-stack --database postgres --orm drizzle --db-setup supabase --auth better-auth
|
|
142
145
|
```
|
|
143
146
|
|
|
144
147
|
Create a project with Convex backend:
|
|
@@ -185,20 +188,20 @@ npx create-better-t-stack --frontend none --backend hono --api trpc --database n
|
|
|
185
188
|
|
|
186
189
|
## Compatibility Notes
|
|
187
190
|
|
|
188
|
-
- **Convex backend**:
|
|
191
|
+
- **Convex backend**: Requires `database`, `orm`, `api`, `runtime`, and `server-deploy` to be `none`; auth can be `better-auth`, `clerk`, or `none` depending frontend compatibility
|
|
189
192
|
- **Backend 'none'**: If selected, this option will force related options like API, ORM, database, authentication, and runtime to 'none'. Examples will also be disabled (set to none/empty).
|
|
190
193
|
- **Frontend 'none'**: Creates a backend-only project. When selected, PWA, Tauri, and certain examples may be disabled.
|
|
191
194
|
- **API 'none'**: Disables tRPC/oRPC setup. Can be used with backend frameworks for REST APIs or custom API implementations.
|
|
192
|
-
- **Database 'none'**: Disables database setup
|
|
195
|
+
- **Database 'none'**: Disables database setup and requires ORM to be `none`.
|
|
193
196
|
- **ORM 'none'**: Can be used when you want to handle database operations manually or use a different ORM.
|
|
194
|
-
- **Runtime 'none'**: Only available with Convex backend or
|
|
197
|
+
- **Runtime 'none'**: Only available with Convex backend, backend `none`, or backend `self`.
|
|
195
198
|
- **Cloudflare Workers runtime**: Only compatible with Hono backend, Drizzle ORM (or no ORM), and SQLite database (with D1 setup). Not compatible with MongoDB.
|
|
196
|
-
- **Addons 'none'**: Skips all addons
|
|
199
|
+
- **Addons 'none'**: Skips all addons.
|
|
197
200
|
- **Examples 'none'**: Skips all example implementations (todo, AI chat).
|
|
198
|
-
- **
|
|
199
|
-
- **PWA support** requires
|
|
200
|
-
- **Tauri desktop app** requires
|
|
201
|
-
- **AI example** is not compatible with
|
|
201
|
+
- **Nuxt, Svelte, SolidJS, and Astro** frontends are only compatible with oRPC API layer
|
|
202
|
+
- **PWA support** requires TanStack Router, React Router, Next.js, or SolidJS
|
|
203
|
+
- **Tauri desktop app** requires TanStack Router, React Router, Nuxt, Svelte, SolidJS, or Next.js
|
|
204
|
+
- **AI example** is not compatible with Solid or Astro. With Convex backend, it also excludes Nuxt and Svelte.
|
|
202
205
|
|
|
203
206
|
## Project Structure
|
|
204
207
|
|
package/dist/cli.mjs
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { _ as DatabaseSetupError, a as VirtualFileSystem, b as UserCancelledError, c as create, d as docs, f as generate, g as CompatibilityError, h as CLIError, i as TEMPLATE_COUNT, l as createBtsCli, m as sponsors, n as GeneratorError, o as add, p as router, r as Result, s as builder, t as EMBEDDED_TEMPLATES, u as createVirtual, v as DirectoryConflictError, x as ValidationError, y as ProjectCreationError } from "./src-
|
|
2
|
+
import { _ as DatabaseSetupError, a as VirtualFileSystem, b as UserCancelledError, c as create, d as docs, f as generate, g as CompatibilityError, h as CLIError, i as TEMPLATE_COUNT, l as createBtsCli, m as sponsors, n as GeneratorError, o as add, p as router, r as Result, s as builder, t as EMBEDDED_TEMPLATES, u as createVirtual, v as DirectoryConflictError, x as ValidationError, y as ProjectCreationError } from "./src-BDjiIkCi.mjs";
|
|
3
3
|
|
|
4
4
|
export { CLIError, CompatibilityError, DatabaseSetupError, DirectoryConflictError, EMBEDDED_TEMPLATES, GeneratorError, ProjectCreationError, Result, TEMPLATE_COUNT, UserCancelledError, ValidationError, VirtualFileSystem, add, builder, create, createBtsCli, createVirtual, docs, generate, router, sponsors };
|
|
@@ -1806,10 +1806,12 @@ const SKILL_SOURCES = {
|
|
|
1806
1806
|
"better-auth/skills": { label: "Better Auth" },
|
|
1807
1807
|
"neondatabase/agent-skills": { label: "Neon Database" },
|
|
1808
1808
|
"supabase/agent-skills": { label: "Supabase" },
|
|
1809
|
+
"planetscale/database-skills": { label: "PlanetScale" },
|
|
1809
1810
|
"expo/skills": { label: "Expo" },
|
|
1810
1811
|
"prisma/skills": { label: "Prisma" },
|
|
1811
1812
|
"elysiajs/skills": { label: "ElysiaJS" },
|
|
1812
|
-
"waynesutton/convexskills": { label: "Convex" }
|
|
1813
|
+
"waynesutton/convexskills": { label: "Convex" },
|
|
1814
|
+
"msmps/opentui-skill": { label: "OpenTUI Platform" }
|
|
1813
1815
|
};
|
|
1814
1816
|
const AVAILABLE_AGENTS = [
|
|
1815
1817
|
{
|
|
@@ -1930,12 +1932,14 @@ function getRecommendedSourceKeys(config) {
|
|
|
1930
1932
|
if (auth === "better-auth") sources.push("better-auth/skills");
|
|
1931
1933
|
if (dbSetup === "neon") sources.push("neondatabase/agent-skills");
|
|
1932
1934
|
if (dbSetup === "supabase") sources.push("supabase/agent-skills");
|
|
1935
|
+
if (dbSetup === "planetscale") sources.push("planetscale/database-skills");
|
|
1933
1936
|
if (orm === "prisma" || dbSetup === "prisma-postgres") sources.push("prisma/skills");
|
|
1934
1937
|
if (examples.includes("ai")) sources.push("vercel/ai");
|
|
1935
1938
|
if (addons.includes("turborepo")) sources.push("vercel/turborepo");
|
|
1936
1939
|
if (backend === "hono") sources.push("yusukebe/hono-skill");
|
|
1937
1940
|
if (backend === "elysia") sources.push("elysiajs/skills");
|
|
1938
1941
|
if (backend === "convex") sources.push("waynesutton/convexskills");
|
|
1942
|
+
if (addons.includes("opentui")) sources.push("msmps/opentui-skill");
|
|
1939
1943
|
return sources;
|
|
1940
1944
|
}
|
|
1941
1945
|
const CURATED_SKILLS_BY_SOURCE = {
|
|
@@ -1957,6 +1961,12 @@ const CURATED_SKILLS_BY_SOURCE = {
|
|
|
1957
1961
|
"better-auth/skills": () => ["better-auth-best-practices"],
|
|
1958
1962
|
"neondatabase/agent-skills": () => ["neon-postgres"],
|
|
1959
1963
|
"supabase/agent-skills": () => ["supabase-postgres-best-practices"],
|
|
1964
|
+
"planetscale/database-skills": (config) => {
|
|
1965
|
+
if (config.dbSetup !== "planetscale") return [];
|
|
1966
|
+
if (config.database === "postgres") return ["postgres", "neki"];
|
|
1967
|
+
if (config.database === "mysql") return ["mysql", "vitess"];
|
|
1968
|
+
return [];
|
|
1969
|
+
},
|
|
1960
1970
|
"expo/skills": (config) => {
|
|
1961
1971
|
const skills = [
|
|
1962
1972
|
"expo-dev-client",
|
|
@@ -1986,7 +1996,8 @@ const CURATED_SKILLS_BY_SOURCE = {
|
|
|
1986
1996
|
"convex-file-storage",
|
|
1987
1997
|
"convex-migrations",
|
|
1988
1998
|
"convex-security-check"
|
|
1989
|
-
]
|
|
1999
|
+
],
|
|
2000
|
+
"msmps/opentui-skill": () => ["opentui"]
|
|
1990
2001
|
};
|
|
1991
2002
|
function getCuratedSkillNamesForSourceKey(sourceKey, config) {
|
|
1992
2003
|
return CURATED_SKILLS_BY_SOURCE[sourceKey](config);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-better-t-stack",
|
|
3
|
-
"version": "3.21.
|
|
3
|
+
"version": "3.21.2",
|
|
4
4
|
"description": "A modern CLI tool for scaffolding end-to-end type-safe TypeScript projects with best practices and customizable configurations",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"better-auth",
|
|
@@ -70,8 +70,8 @@
|
|
|
70
70
|
"prepublishOnly": "npm run build"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@better-t-stack/template-generator": "^3.21.
|
|
74
|
-
"@better-t-stack/types": "^3.21.
|
|
73
|
+
"@better-t-stack/template-generator": "^3.21.2",
|
|
74
|
+
"@better-t-stack/types": "^3.21.2",
|
|
75
75
|
"@clack/core": "^1.0.0",
|
|
76
76
|
"@clack/prompts": "^1.0.0",
|
|
77
77
|
"@orpc/server": "^1.13.4",
|