@tanstack/create 0.49.3 → 0.60.0

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.
Files changed (225) hide show
  1. package/CHANGELOG.md +732 -0
  2. package/dist/add-ons.js +42 -2
  3. package/dist/add-to-app.js +36 -7
  4. package/dist/custom-add-ons/add-on.js +2 -26
  5. package/dist/custom-add-ons/starter.js +1 -2
  6. package/dist/file-helpers.js +11 -10
  7. package/dist/frameworks/react/add-ons/ai/info.json +1 -1
  8. package/dist/frameworks/react/add-ons/apollo-client/info.json +1 -1
  9. package/dist/frameworks/react/add-ons/better-auth/info.json +0 -2
  10. package/dist/frameworks/react/add-ons/clerk/info.json +0 -1
  11. package/dist/frameworks/react/add-ons/db/info.json +1 -1
  12. package/dist/frameworks/react/add-ons/drizzle/info.json +1 -1
  13. package/dist/frameworks/react/add-ons/drizzle/package.json.ejs +4 -0
  14. package/dist/frameworks/react/add-ons/mcp/info.json +1 -2
  15. package/dist/frameworks/react/add-ons/neon/assets/neon-vite-plugin.ts +1 -1
  16. package/dist/frameworks/react/add-ons/neon/info.json +1 -2
  17. package/dist/frameworks/react/add-ons/oRPC/info.json +1 -1
  18. package/dist/frameworks/react/add-ons/paraglide/info.json +1 -1
  19. package/dist/frameworks/react/add-ons/prisma/info.json +1 -1
  20. package/dist/frameworks/react/add-ons/prisma/package.json.ejs +4 -0
  21. package/dist/frameworks/react/add-ons/sentry/info.json +1 -2
  22. package/dist/frameworks/react/add-ons/tRPC/info.json +1 -1
  23. package/dist/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +1 -29
  24. package/dist/frameworks/react/add-ons/workos/info.json +0 -1
  25. package/dist/frameworks/react/hosts/cloudflare/info.json +0 -1
  26. package/dist/frameworks/react/hosts/netlify/info.json +0 -1
  27. package/dist/frameworks/react/hosts/nitro/info.json +0 -1
  28. package/dist/frameworks/react/hosts/railway/info.json +0 -1
  29. package/dist/frameworks/react/index.js +1 -6
  30. package/dist/frameworks/react/project/base/README.md.ejs +86 -436
  31. package/dist/frameworks/react/project/base/_dot_gitignore +4 -0
  32. package/dist/frameworks/react/project/base/package.json +8 -5
  33. package/dist/frameworks/react/project/base/src/components/Header.tsx.ejs +2 -32
  34. package/dist/frameworks/react/project/base/src/routes/__root.tsx.ejs +4 -44
  35. package/dist/frameworks/react/project/base/src/routes/index.tsx.ejs +99 -61
  36. package/dist/frameworks/react/project/base/src/styles.css.ejs +3 -3
  37. package/dist/frameworks/react/project/base/tsconfig.json.ejs +1 -1
  38. package/dist/frameworks/react/project/base/vite.config.ts.ejs +33 -27
  39. package/dist/frameworks/react/project/packages.json +2 -2
  40. package/dist/frameworks/solid/add-ons/better-auth/info.json +1 -1
  41. package/dist/frameworks/solid/hosts/cloudflare/info.json +0 -1
  42. package/dist/frameworks/solid/hosts/netlify/info.json +0 -1
  43. package/dist/frameworks/solid/hosts/nitro/info.json +0 -1
  44. package/dist/frameworks/solid/hosts/railway/info.json +0 -1
  45. package/dist/frameworks/solid/index.js +1 -6
  46. package/dist/frameworks/solid/project/base/README.md.ejs +43 -117
  47. package/dist/frameworks/solid/project/base/_dot_gitignore +4 -0
  48. package/dist/frameworks/solid/project/base/package.json +8 -3
  49. package/dist/frameworks/solid/project/base/src/components/Header.tsx.ejs +2 -25
  50. package/dist/frameworks/solid/project/base/src/routes/__root.tsx.ejs +3 -30
  51. package/dist/frameworks/solid/project/base/src/routes/index.tsx.ejs +97 -35
  52. package/dist/frameworks/solid/project/base/tsconfig.json.ejs +1 -1
  53. package/dist/frameworks/solid/project/base/vite.config.ts.ejs +15 -20
  54. package/dist/frameworks/solid/project/packages.json +2 -2
  55. package/dist/frameworks.js +0 -1
  56. package/dist/package-json.js +6 -10
  57. package/dist/template-file.js +21 -7
  58. package/dist/types/custom-add-ons/add-on.d.ts +1 -1
  59. package/dist/types/file-helpers.d.ts +0 -1
  60. package/dist/types/types.d.ts +12 -12
  61. package/dist/types.js +1 -2
  62. package/package.json +1 -1
  63. package/src/add-ons.ts +54 -2
  64. package/src/add-to-app.ts +42 -7
  65. package/src/custom-add-ons/add-on.ts +2 -33
  66. package/src/custom-add-ons/starter.ts +1 -2
  67. package/src/file-helpers.ts +11 -10
  68. package/src/frameworks/react/add-ons/ai/info.json +1 -1
  69. package/src/frameworks/react/add-ons/apollo-client/info.json +1 -1
  70. package/src/frameworks/react/add-ons/better-auth/info.json +0 -2
  71. package/src/frameworks/react/add-ons/clerk/info.json +0 -1
  72. package/src/frameworks/react/add-ons/db/info.json +1 -1
  73. package/src/frameworks/react/add-ons/drizzle/info.json +1 -1
  74. package/src/frameworks/react/add-ons/drizzle/package.json.ejs +4 -0
  75. package/src/frameworks/react/add-ons/mcp/info.json +1 -2
  76. package/src/frameworks/react/add-ons/neon/assets/neon-vite-plugin.ts +1 -1
  77. package/src/frameworks/react/add-ons/neon/info.json +1 -2
  78. package/src/frameworks/react/add-ons/oRPC/info.json +1 -1
  79. package/src/frameworks/react/add-ons/paraglide/info.json +1 -1
  80. package/src/frameworks/react/add-ons/prisma/info.json +1 -1
  81. package/src/frameworks/react/add-ons/prisma/package.json.ejs +4 -0
  82. package/src/frameworks/react/add-ons/sentry/info.json +1 -2
  83. package/src/frameworks/react/add-ons/tRPC/info.json +1 -1
  84. package/src/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +1 -29
  85. package/src/frameworks/react/add-ons/workos/info.json +0 -1
  86. package/src/frameworks/react/hosts/cloudflare/info.json +0 -1
  87. package/src/frameworks/react/hosts/netlify/info.json +0 -1
  88. package/src/frameworks/react/hosts/nitro/info.json +0 -1
  89. package/src/frameworks/react/hosts/railway/info.json +0 -1
  90. package/src/frameworks/react/index.ts +1 -6
  91. package/src/frameworks/react/project/base/README.md.ejs +86 -436
  92. package/src/frameworks/react/project/base/_dot_gitignore +4 -0
  93. package/src/frameworks/react/project/base/package.json +8 -5
  94. package/src/frameworks/react/project/base/src/components/Header.tsx.ejs +2 -32
  95. package/src/frameworks/react/project/base/src/routes/__root.tsx.ejs +4 -44
  96. package/src/frameworks/react/project/base/src/routes/index.tsx.ejs +99 -61
  97. package/src/frameworks/react/project/base/src/styles.css.ejs +3 -3
  98. package/src/frameworks/react/project/base/tsconfig.json.ejs +1 -1
  99. package/src/frameworks/react/project/base/vite.config.ts.ejs +33 -27
  100. package/src/frameworks/react/project/packages.json +2 -2
  101. package/src/frameworks/solid/add-ons/better-auth/info.json +1 -1
  102. package/src/frameworks/solid/hosts/cloudflare/info.json +0 -1
  103. package/src/frameworks/solid/hosts/netlify/info.json +0 -1
  104. package/src/frameworks/solid/hosts/nitro/info.json +0 -1
  105. package/src/frameworks/solid/hosts/railway/info.json +0 -1
  106. package/src/frameworks/solid/index.ts +1 -6
  107. package/src/frameworks/solid/project/base/README.md.ejs +43 -117
  108. package/src/frameworks/solid/project/base/_dot_gitignore +4 -0
  109. package/src/frameworks/solid/project/base/package.json +8 -3
  110. package/src/frameworks/solid/project/base/src/components/Header.tsx.ejs +2 -25
  111. package/src/frameworks/solid/project/base/src/routes/__root.tsx.ejs +3 -30
  112. package/src/frameworks/solid/project/base/src/routes/index.tsx.ejs +97 -35
  113. package/src/frameworks/solid/project/base/tsconfig.json.ejs +1 -1
  114. package/src/frameworks/solid/project/base/vite.config.ts.ejs +15 -20
  115. package/src/frameworks/solid/project/packages.json +2 -2
  116. package/src/frameworks.ts +0 -1
  117. package/src/package-json.ts +6 -10
  118. package/src/template-file.ts +27 -8
  119. package/src/types.ts +1 -2
  120. package/tests/add-to-app.test.ts +37 -0
  121. package/tests/file-helper.test.ts +23 -2
  122. package/tests/package-json.test.ts +32 -0
  123. package/tests/template-file.test.ts +28 -0
  124. package/dist/frameworks/react/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -31
  125. package/dist/frameworks/react/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
  126. package/dist/frameworks/react/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -11
  127. package/dist/frameworks/react/add-ons/module-federation/info.json +0 -11
  128. package/dist/frameworks/react/add-ons/module-federation/package.json +0 -5
  129. package/dist/frameworks/react/add-ons/module-federation/small-logo.svg +0 -87
  130. package/dist/frameworks/react/add-ons/start/assets/_dot_gitignore.append +0 -3
  131. package/dist/frameworks/react/add-ons/start/assets/src/data/demo.punk-songs.ts +0 -13
  132. package/dist/frameworks/react/add-ons/start/assets/src/router.tsx.ejs +0 -77
  133. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/api.names.ts +0 -10
  134. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/api.tq-todos.ts.ejs +0 -35
  135. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.api-request.tsx.ejs +0 -68
  136. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.css.ejs +0 -43
  137. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.server-funcs.tsx.ejs +0 -183
  138. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.data-only.tsx.ejs +0 -55
  139. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.full-ssr.tsx.ejs +0 -55
  140. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.index.tsx.ejs +0 -62
  141. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.spa-mode.tsx.ejs +0 -62
  142. package/dist/frameworks/react/add-ons/start/assets/src/routes/index.tsx.ejs +0 -142
  143. package/dist/frameworks/react/add-ons/start/assets/src/server.ts.ejs +0 -9
  144. package/dist/frameworks/react/add-ons/start/assets/vite.config.ts.ejs +0 -40
  145. package/dist/frameworks/react/add-ons/start/info.json +0 -61
  146. package/dist/frameworks/react/add-ons/start/package.json +0 -12
  147. package/dist/frameworks/react/add-ons/start/small-logo.svg +0 -1
  148. package/dist/frameworks/react/project/base/index.html.ejs +0 -20
  149. package/dist/frameworks/react/project/base/src/App.css.ejs +0 -38
  150. package/dist/frameworks/react/project/base/src/App.tsx.ejs +0 -63
  151. package/dist/frameworks/react/project/base/src/components/Header.css.ejs +0 -18
  152. package/dist/frameworks/react/project/base/src/logo.svg +0 -12
  153. package/dist/frameworks/react/project/base/src/main.tsx.ejs +0 -166
  154. package/dist/frameworks/react/project/base/src/reportWebVitals.ts.ejs +0 -28
  155. package/dist/frameworks/solid/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -27
  156. package/dist/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
  157. package/dist/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -9
  158. package/dist/frameworks/solid/add-ons/module-federation/info.json +0 -10
  159. package/dist/frameworks/solid/add-ons/module-federation/package.json +0 -5
  160. package/dist/frameworks/solid/add-ons/module-federation/small-logo.svg +0 -87
  161. package/dist/frameworks/solid/add-ons/start/assets/public/tanstack-circle-logo.png +0 -0
  162. package/dist/frameworks/solid/add-ons/start/assets/public/tanstack-word-logo-white.svg +0 -1
  163. package/dist/frameworks/solid/add-ons/start/assets/src/router.tsx.ejs +0 -30
  164. package/dist/frameworks/solid/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx +0 -49
  165. package/dist/frameworks/solid/add-ons/start/assets/src/routes/index.tsx.ejs +0 -138
  166. package/dist/frameworks/solid/add-ons/start/assets/vite.config.ts.ejs +0 -22
  167. package/dist/frameworks/solid/add-ons/start/info.json +0 -18
  168. package/dist/frameworks/solid/add-ons/start/package.json +0 -15
  169. package/dist/frameworks/solid/add-ons/start/small-logo.svg +0 -1
  170. package/dist/frameworks/solid/project/base/index.html.ejs +0 -20
  171. package/dist/frameworks/solid/project/base/src/App.css.ejs +0 -38
  172. package/dist/frameworks/solid/project/base/src/App.tsx.ejs +0 -34
  173. package/dist/frameworks/solid/project/base/src/logo.svg +0 -120
  174. package/dist/frameworks/solid/project/base/src/main.tsx.ejs +0 -126
  175. package/src/frameworks/react/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -31
  176. package/src/frameworks/react/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
  177. package/src/frameworks/react/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -11
  178. package/src/frameworks/react/add-ons/module-federation/info.json +0 -11
  179. package/src/frameworks/react/add-ons/module-federation/package.json +0 -5
  180. package/src/frameworks/react/add-ons/module-federation/small-logo.svg +0 -87
  181. package/src/frameworks/react/add-ons/start/assets/_dot_gitignore.append +0 -3
  182. package/src/frameworks/react/add-ons/start/assets/src/data/demo.punk-songs.ts +0 -13
  183. package/src/frameworks/react/add-ons/start/assets/src/router.tsx.ejs +0 -77
  184. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/api.names.ts +0 -10
  185. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/api.tq-todos.ts.ejs +0 -35
  186. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.api-request.tsx.ejs +0 -68
  187. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.css.ejs +0 -43
  188. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.server-funcs.tsx.ejs +0 -183
  189. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.data-only.tsx.ejs +0 -55
  190. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.full-ssr.tsx.ejs +0 -55
  191. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.index.tsx.ejs +0 -62
  192. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.spa-mode.tsx.ejs +0 -62
  193. package/src/frameworks/react/add-ons/start/assets/src/routes/index.tsx.ejs +0 -142
  194. package/src/frameworks/react/add-ons/start/assets/src/server.ts.ejs +0 -9
  195. package/src/frameworks/react/add-ons/start/assets/vite.config.ts.ejs +0 -40
  196. package/src/frameworks/react/add-ons/start/info.json +0 -61
  197. package/src/frameworks/react/add-ons/start/package.json +0 -12
  198. package/src/frameworks/react/add-ons/start/small-logo.svg +0 -1
  199. package/src/frameworks/react/project/base/index.html.ejs +0 -20
  200. package/src/frameworks/react/project/base/src/App.css.ejs +0 -38
  201. package/src/frameworks/react/project/base/src/App.tsx.ejs +0 -63
  202. package/src/frameworks/react/project/base/src/components/Header.css.ejs +0 -18
  203. package/src/frameworks/react/project/base/src/logo.svg +0 -12
  204. package/src/frameworks/react/project/base/src/main.tsx.ejs +0 -166
  205. package/src/frameworks/react/project/base/src/reportWebVitals.ts.ejs +0 -28
  206. package/src/frameworks/solid/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -27
  207. package/src/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
  208. package/src/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -9
  209. package/src/frameworks/solid/add-ons/module-federation/info.json +0 -10
  210. package/src/frameworks/solid/add-ons/module-federation/package.json +0 -5
  211. package/src/frameworks/solid/add-ons/module-federation/small-logo.svg +0 -87
  212. package/src/frameworks/solid/add-ons/start/assets/public/tanstack-circle-logo.png +0 -0
  213. package/src/frameworks/solid/add-ons/start/assets/public/tanstack-word-logo-white.svg +0 -1
  214. package/src/frameworks/solid/add-ons/start/assets/src/router.tsx.ejs +0 -30
  215. package/src/frameworks/solid/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx +0 -49
  216. package/src/frameworks/solid/add-ons/start/assets/src/routes/index.tsx.ejs +0 -138
  217. package/src/frameworks/solid/add-ons/start/assets/vite.config.ts.ejs +0 -22
  218. package/src/frameworks/solid/add-ons/start/info.json +0 -18
  219. package/src/frameworks/solid/add-ons/start/package.json +0 -15
  220. package/src/frameworks/solid/add-ons/start/small-logo.svg +0 -1
  221. package/src/frameworks/solid/project/base/index.html.ejs +0 -20
  222. package/src/frameworks/solid/project/base/src/App.css.ejs +0 -38
  223. package/src/frameworks/solid/project/base/src/App.tsx.ejs +0 -34
  224. package/src/frameworks/solid/project/base/src/logo.svg +0 -120
  225. package/src/frameworks/solid/project/base/src/main.tsx.ejs +0 -126
@@ -16,7 +16,6 @@ export declare function generateProject(persistedOptions: PersistedOptions): Pro
16
16
  description: string;
17
17
  id: string;
18
18
  name: string;
19
- tailwind: boolean;
20
19
  modes: string[];
21
20
  phase: "add-on" | "setup";
22
21
  command?: {
@@ -39,6 +38,7 @@ export declare function generateProject(persistedOptions: PersistedOptions): Pro
39
38
  link?: string | undefined;
40
39
  license?: string | undefined;
41
40
  warning?: string | undefined;
41
+ tailwind?: boolean | undefined;
42
42
  category?: "other" | "tanstack" | "database" | "orm" | "auth" | "deploy" | "styling" | "monitoring" | "cms" | "api" | "i18n" | "tooling" | undefined;
43
43
  exclusive?: ("database" | "orm" | "auth" | "deploy" | "linter")[] | undefined;
44
44
  color?: string | undefined;
@@ -5,7 +5,6 @@ export declare function convertBinaryContentsToBase64(contents: any): string;
5
5
  export declare function isBase64(content: string): boolean;
6
6
  export declare function getBinaryFile(content: string): string | null;
7
7
  /**
8
- * Convert an absolute path to a clean relative path by removing a base directory.
9
8
  * Returns a path without leading ./ or / prefix.
10
9
  */
11
10
  export declare function toCleanPath(absolutePath: string, baseDir: string): string;
@@ -112,7 +112,7 @@ export declare const AddOnBaseSchema: z.ZodObject<{
112
112
  link: z.ZodOptional<z.ZodString>;
113
113
  license: z.ZodOptional<z.ZodString>;
114
114
  warning: z.ZodOptional<z.ZodString>;
115
- tailwind: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
115
+ tailwind: z.ZodOptional<z.ZodBoolean>;
116
116
  type: z.ZodEnum<["add-on", "example", "starter", "toolchain", "deployment"]>;
117
117
  category: z.ZodOptional<z.ZodEnum<["tanstack", "database", "orm", "auth", "deploy", "styling", "monitoring", "cms", "api", "i18n", "tooling", "other"]>>;
118
118
  exclusive: z.ZodOptional<z.ZodArray<z.ZodEnum<["orm", "auth", "deploy", "database", "linter"]>, "many">>;
@@ -204,7 +204,6 @@ export declare const AddOnBaseSchema: z.ZodObject<{
204
204
  description: string;
205
205
  id: string;
206
206
  name: string;
207
- tailwind: boolean;
208
207
  command?: {
209
208
  command: string;
210
209
  args?: string[] | undefined;
@@ -225,6 +224,7 @@ export declare const AddOnBaseSchema: z.ZodObject<{
225
224
  link?: string | undefined;
226
225
  license?: string | undefined;
227
226
  warning?: string | undefined;
227
+ tailwind?: boolean | undefined;
228
228
  category?: "other" | "tanstack" | "database" | "orm" | "auth" | "deploy" | "styling" | "monitoring" | "cms" | "api" | "i18n" | "tooling" | undefined;
229
229
  exclusive?: ("database" | "orm" | "auth" | "deploy" | "linter")[] | undefined;
230
230
  color?: string | undefined;
@@ -305,6 +305,7 @@ export declare const StarterSchema: z.ZodObject<{
305
305
  link: z.ZodOptional<z.ZodString>;
306
306
  license: z.ZodOptional<z.ZodString>;
307
307
  warning: z.ZodOptional<z.ZodString>;
308
+ tailwind: z.ZodOptional<z.ZodBoolean>;
308
309
  type: z.ZodEnum<["add-on", "example", "starter", "toolchain", "deployment"]>;
309
310
  category: z.ZodOptional<z.ZodEnum<["tanstack", "database", "orm", "auth", "deploy", "styling", "monitoring", "cms", "api", "i18n", "tooling", "other"]>>;
310
311
  exclusive: z.ZodOptional<z.ZodArray<z.ZodEnum<["orm", "auth", "deploy", "database", "linter"]>, "many">>;
@@ -395,14 +396,12 @@ export declare const StarterSchema: z.ZodObject<{
395
396
  framework: z.ZodString;
396
397
  mode: z.ZodString;
397
398
  typescript: z.ZodBoolean;
398
- tailwind: z.ZodBoolean;
399
399
  banner: z.ZodOptional<z.ZodString>;
400
400
  }, "strip", z.ZodTypeAny, {
401
401
  type: "add-on" | "example" | "starter" | "toolchain" | "deployment";
402
402
  description: string;
403
403
  id: string;
404
404
  name: string;
405
- tailwind: boolean;
406
405
  framework: string;
407
406
  mode: string;
408
407
  typescript: boolean;
@@ -426,6 +425,7 @@ export declare const StarterSchema: z.ZodObject<{
426
425
  link?: string | undefined;
427
426
  license?: string | undefined;
428
427
  warning?: string | undefined;
428
+ tailwind?: boolean | undefined;
429
429
  category?: "other" | "tanstack" | "database" | "orm" | "auth" | "deploy" | "styling" | "monitoring" | "cms" | "api" | "i18n" | "tooling" | undefined;
430
430
  exclusive?: ("database" | "orm" | "auth" | "deploy" | "linter")[] | undefined;
431
431
  color?: string | undefined;
@@ -454,7 +454,6 @@ export declare const StarterSchema: z.ZodObject<{
454
454
  description: string;
455
455
  id: string;
456
456
  name: string;
457
- tailwind: boolean;
458
457
  framework: string;
459
458
  mode: string;
460
459
  typescript: boolean;
@@ -478,6 +477,7 @@ export declare const StarterSchema: z.ZodObject<{
478
477
  link?: string | undefined;
479
478
  license?: string | undefined;
480
479
  warning?: string | undefined;
480
+ tailwind?: boolean | undefined;
481
481
  category?: "other" | "tanstack" | "database" | "orm" | "auth" | "deploy" | "styling" | "monitoring" | "cms" | "api" | "i18n" | "tooling" | undefined;
482
482
  exclusive?: ("database" | "orm" | "auth" | "deploy" | "linter")[] | undefined;
483
483
  color?: string | undefined;
@@ -511,6 +511,7 @@ export declare const StarterCompiledSchema: z.ZodObject<{
511
511
  link: z.ZodOptional<z.ZodString>;
512
512
  license: z.ZodOptional<z.ZodString>;
513
513
  warning: z.ZodOptional<z.ZodString>;
514
+ tailwind: z.ZodOptional<z.ZodBoolean>;
514
515
  type: z.ZodEnum<["add-on", "example", "starter", "toolchain", "deployment"]>;
515
516
  category: z.ZodOptional<z.ZodEnum<["tanstack", "database", "orm", "auth", "deploy", "styling", "monitoring", "cms", "api", "i18n", "tooling", "other"]>>;
516
517
  exclusive: z.ZodOptional<z.ZodArray<z.ZodEnum<["orm", "auth", "deploy", "database", "linter"]>, "many">>;
@@ -601,7 +602,6 @@ export declare const StarterCompiledSchema: z.ZodObject<{
601
602
  framework: z.ZodString;
602
603
  mode: z.ZodString;
603
604
  typescript: z.ZodBoolean;
604
- tailwind: z.ZodBoolean;
605
605
  banner: z.ZodOptional<z.ZodString>;
606
606
  } & {
607
607
  files: z.ZodRecord<z.ZodString, z.ZodString>;
@@ -611,7 +611,6 @@ export declare const StarterCompiledSchema: z.ZodObject<{
611
611
  description: string;
612
612
  id: string;
613
613
  name: string;
614
- tailwind: boolean;
615
614
  framework: string;
616
615
  mode: string;
617
616
  typescript: boolean;
@@ -637,6 +636,7 @@ export declare const StarterCompiledSchema: z.ZodObject<{
637
636
  link?: string | undefined;
638
637
  license?: string | undefined;
639
638
  warning?: string | undefined;
639
+ tailwind?: boolean | undefined;
640
640
  category?: "other" | "tanstack" | "database" | "orm" | "auth" | "deploy" | "styling" | "monitoring" | "cms" | "api" | "i18n" | "tooling" | undefined;
641
641
  exclusive?: ("database" | "orm" | "auth" | "deploy" | "linter")[] | undefined;
642
642
  color?: string | undefined;
@@ -665,7 +665,6 @@ export declare const StarterCompiledSchema: z.ZodObject<{
665
665
  description: string;
666
666
  id: string;
667
667
  name: string;
668
- tailwind: boolean;
669
668
  framework: string;
670
669
  mode: string;
671
670
  typescript: boolean;
@@ -691,6 +690,7 @@ export declare const StarterCompiledSchema: z.ZodObject<{
691
690
  link?: string | undefined;
692
691
  license?: string | undefined;
693
692
  warning?: string | undefined;
693
+ tailwind?: boolean | undefined;
694
694
  category?: "other" | "tanstack" | "database" | "orm" | "auth" | "deploy" | "styling" | "monitoring" | "cms" | "api" | "i18n" | "tooling" | undefined;
695
695
  exclusive?: ("database" | "orm" | "auth" | "deploy" | "linter")[] | undefined;
696
696
  color?: string | undefined;
@@ -743,7 +743,7 @@ export declare const AddOnInfoSchema: z.ZodObject<{
743
743
  link: z.ZodOptional<z.ZodString>;
744
744
  license: z.ZodOptional<z.ZodString>;
745
745
  warning: z.ZodOptional<z.ZodString>;
746
- tailwind: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
746
+ tailwind: z.ZodOptional<z.ZodBoolean>;
747
747
  type: z.ZodEnum<["add-on", "example", "starter", "toolchain", "deployment"]>;
748
748
  category: z.ZodOptional<z.ZodEnum<["tanstack", "database", "orm", "auth", "deploy", "styling", "monitoring", "cms", "api", "i18n", "tooling", "other"]>>;
749
749
  exclusive: z.ZodOptional<z.ZodArray<z.ZodEnum<["orm", "auth", "deploy", "database", "linter"]>, "many">>;
@@ -858,7 +858,6 @@ export declare const AddOnInfoSchema: z.ZodObject<{
858
858
  description: string;
859
859
  id: string;
860
860
  name: string;
861
- tailwind: boolean;
862
861
  modes: string[];
863
862
  phase: "add-on" | "setup";
864
863
  command?: {
@@ -881,6 +880,7 @@ export declare const AddOnInfoSchema: z.ZodObject<{
881
880
  link?: string | undefined;
882
881
  license?: string | undefined;
883
882
  warning?: string | undefined;
883
+ tailwind?: boolean | undefined;
884
884
  category?: "other" | "tanstack" | "database" | "orm" | "auth" | "deploy" | "styling" | "monitoring" | "cms" | "api" | "i18n" | "tooling" | undefined;
885
885
  exclusive?: ("database" | "orm" | "auth" | "deploy" | "linter")[] | undefined;
886
886
  color?: string | undefined;
@@ -979,7 +979,7 @@ export declare const AddOnCompiledSchema: z.ZodObject<{
979
979
  link: z.ZodOptional<z.ZodString>;
980
980
  license: z.ZodOptional<z.ZodString>;
981
981
  warning: z.ZodOptional<z.ZodString>;
982
- tailwind: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
982
+ tailwind: z.ZodOptional<z.ZodBoolean>;
983
983
  type: z.ZodEnum<["add-on", "example", "starter", "toolchain", "deployment"]>;
984
984
  category: z.ZodOptional<z.ZodEnum<["tanstack", "database", "orm", "auth", "deploy", "styling", "monitoring", "cms", "api", "i18n", "tooling", "other"]>>;
985
985
  exclusive: z.ZodOptional<z.ZodArray<z.ZodEnum<["orm", "auth", "deploy", "database", "linter"]>, "many">>;
@@ -1098,7 +1098,6 @@ export declare const AddOnCompiledSchema: z.ZodObject<{
1098
1098
  description: string;
1099
1099
  id: string;
1100
1100
  name: string;
1101
- tailwind: boolean;
1102
1101
  files: Record<string, string>;
1103
1102
  deletedFiles: string[];
1104
1103
  modes: string[];
@@ -1123,6 +1122,7 @@ export declare const AddOnCompiledSchema: z.ZodObject<{
1123
1122
  link?: string | undefined;
1124
1123
  license?: string | undefined;
1125
1124
  warning?: string | undefined;
1125
+ tailwind?: boolean | undefined;
1126
1126
  category?: "other" | "tanstack" | "database" | "orm" | "auth" | "deploy" | "styling" | "monitoring" | "cms" | "api" | "i18n" | "tooling" | undefined;
1127
1127
  exclusive?: ("database" | "orm" | "auth" | "deploy" | "linter")[] | undefined;
1128
1128
  color?: string | undefined;
package/dist/types.js CHANGED
@@ -22,7 +22,7 @@ export const AddOnBaseSchema = z.object({
22
22
  link: z.string().optional(),
23
23
  license: z.string().optional(),
24
24
  warning: z.string().optional(),
25
- tailwind: z.boolean().optional().default(true),
25
+ tailwind: z.boolean().optional(),
26
26
  type: z.enum(['add-on', 'example', 'starter', 'toolchain', 'deployment']),
27
27
  category: z
28
28
  .enum([
@@ -80,7 +80,6 @@ export const StarterSchema = AddOnBaseSchema.extend({
80
80
  framework: z.string(),
81
81
  mode: z.string(),
82
82
  typescript: z.boolean(),
83
- tailwind: z.boolean(),
84
83
  banner: z.string().optional(),
85
84
  });
86
85
  export const StarterCompiledSchema = StarterSchema.extend({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/create",
3
- "version": "0.49.3",
3
+ "version": "0.60.0",
4
4
  "description": "TanStack Application Builder Engine",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/src/add-ons.ts CHANGED
@@ -25,14 +25,24 @@ export async function finalizeAddOns(
25
25
 
26
26
  for (const addOnID of finalAddOnIDs) {
27
27
  let addOn: AddOn | undefined
28
- const localAddOn = addOns.find((a) => a.id === addOnID)
28
+ const localAddOn =
29
+ addOns.find((a) => a.id === addOnID) ??
30
+ addOns.find((a) => a.id.toLowerCase() === addOnID.toLowerCase())
29
31
  if (localAddOn) {
30
32
  addOn = loadAddOn(localAddOn)
33
+ if (localAddOn.id !== addOnID) {
34
+ // Replace the mistyped ID with the canonical one
35
+ finalAddOnIDs.delete(addOnID)
36
+ finalAddOnIDs.add(localAddOn.id)
37
+ }
31
38
  } else if (addOnID.startsWith('http')) {
32
39
  addOn = await loadRemoteAddOn(addOnID)
33
40
  addOns.push(addOn)
34
41
  } else {
35
- throw new Error(`Add-on ${addOnID} not found`)
42
+ const suggestion = findClosestAddOn(addOnID, addOns)
43
+ throw new Error(
44
+ `Add-on ${addOnID} not found${suggestion ? `. Did you mean "${suggestion}"?` : ''}`,
45
+ )
36
46
  }
37
47
 
38
48
  for (const dependsOn of addOn.dependsOn || []) {
@@ -55,6 +65,48 @@ function loadAddOn(addOn: AddOn): AddOn {
55
65
  return addOn
56
66
  }
57
67
 
68
+ function findClosestAddOn(
69
+ input: string,
70
+ addOns: Array<AddOn>,
71
+ ): string | undefined {
72
+ const inputLower = input.toLowerCase()
73
+ let bestMatch: string | undefined
74
+ let bestDistance = Infinity
75
+
76
+ for (const addOn of addOns) {
77
+ const d = levenshtein(inputLower, addOn.id.toLowerCase())
78
+ if (d < bestDistance) {
79
+ bestDistance = d
80
+ bestMatch = addOn.id
81
+ }
82
+ }
83
+
84
+ // Only suggest if the distance is reasonable (less than half the input length)
85
+ if (bestMatch && bestDistance <= Math.max(Math.floor(input.length / 2), 2)) {
86
+ return bestMatch
87
+ }
88
+ return undefined
89
+ }
90
+
91
+ function levenshtein(a: string, b: string): number {
92
+ const m = a.length
93
+ const n = b.length
94
+ let prev = Array.from({ length: n + 1 }, (_, j) => j)
95
+
96
+ for (let i = 1; i <= m; i++) {
97
+ const curr = [i]
98
+ for (let j = 1; j <= n; j++) {
99
+ curr[j] =
100
+ a[i - 1] === b[j - 1]
101
+ ? prev[j - 1]
102
+ : 1 + Math.min(prev[j], curr[j - 1], prev[j - 1])
103
+ }
104
+ prev = curr
105
+ }
106
+
107
+ return prev[n]
108
+ }
109
+
58
110
  export function populateAddOnOptionsDefaults(
59
111
  chosenAddOns: Array<AddOn>,
60
112
  ): Record<string, Record<string, any>> {
package/src/add-to-app.ts CHANGED
@@ -88,6 +88,41 @@ export async function writeFiles(
88
88
  },
89
89
  forced: boolean,
90
90
  ) {
91
+ const toRelativePath = (filePath: string) => {
92
+ const normalizedFilePath = filePath.replace(/\\/g, '/')
93
+ const normalizedCwd = cwd.replace(/\\/g, '/')
94
+ const cwdWithoutDrive = normalizedCwd.replace(/^[a-zA-Z]:/, '')
95
+ const cwdWithoutDriveNoLeading = cwdWithoutDrive.replace(/^\/+/, '')
96
+
97
+ if (normalizedFilePath === normalizedCwd) {
98
+ return ''
99
+ }
100
+ if (normalizedFilePath.startsWith(`${normalizedCwd}/`)) {
101
+ return normalizedFilePath.slice(normalizedCwd.length + 1)
102
+ }
103
+ if (normalizedFilePath === cwdWithoutDrive) {
104
+ return ''
105
+ }
106
+ if (normalizedFilePath.startsWith(`${cwdWithoutDrive}/`)) {
107
+ return normalizedFilePath.slice(cwdWithoutDrive.length + 1)
108
+ }
109
+ if (normalizedFilePath === cwdWithoutDriveNoLeading) {
110
+ return ''
111
+ }
112
+ if (normalizedFilePath.startsWith(`${cwdWithoutDriveNoLeading}/`)) {
113
+ return normalizedFilePath.slice(cwdWithoutDriveNoLeading.length + 1)
114
+ }
115
+
116
+ return normalizedFilePath.replace(/^\/+/, '')
117
+ }
118
+
119
+ const relativeOutputFiles = Object.keys(output.files).reduce<
120
+ Record<string, string>
121
+ >((acc, filePath) => {
122
+ acc[toRelativePath(filePath)] = output.files[filePath]
123
+ return acc
124
+ }, {})
125
+
91
126
  const currentFiles = await recursivelyGatherFilesFromEnvironment(
92
127
  environment,
93
128
  cwd,
@@ -96,10 +131,9 @@ export async function writeFiles(
96
131
 
97
132
  const overwrittenFiles: Array<string> = []
98
133
  const changedFiles: Array<string> = []
99
- for (const file of Object.keys(output.files)) {
100
- const relativeFile = file.replace(cwd, '')
134
+ for (const relativeFile of Object.keys(relativeOutputFiles)) {
101
135
  if (currentFiles[relativeFile]) {
102
- if (currentFiles[relativeFile] !== output.files[file]) {
136
+ if (currentFiles[relativeFile] !== relativeOutputFiles[relativeFile]) {
103
137
  overwrittenFiles.push(relativeFile)
104
138
  }
105
139
  } else {
@@ -118,9 +152,10 @@ export async function writeFiles(
118
152
  }
119
153
  }
120
154
 
121
- for (const file of output.deletedFiles) {
122
- if (environment.exists(resolve(cwd, file))) {
123
- await environment.deleteFile(resolve(cwd, file))
155
+ for (const filePath of output.deletedFiles) {
156
+ const relativeFilePath = toRelativePath(filePath)
157
+ if (environment.exists(resolve(cwd, relativeFilePath))) {
158
+ await environment.deleteFile(resolve(cwd, relativeFilePath))
124
159
  }
125
160
  }
126
161
 
@@ -132,7 +167,7 @@ export async function writeFiles(
132
167
 
133
168
  for (const file of [...changedFiles, ...overwrittenFiles]) {
134
169
  const fName = basename(file)
135
- const contents = output.files[file]
170
+ const contents = relativeOutputFiles[file]
136
171
  if (fName === 'package.json') {
137
172
  const currentJson = JSON.parse(
138
173
  await environment.readFile(resolve(cwd, file)),
@@ -50,7 +50,7 @@ export function templatize(routeCode: string, routeFile: string) {
50
50
  // Replace the import
51
51
  code = code.replace(
52
52
  /import { createFileRoute } from ['"]@tanstack\/react-router['"]/g,
53
- `import { <% if (fileRouter) { %>createFileRoute<% } else { %>createRoute<% } %> } from '@tanstack/react-router'`,
53
+ `import { createFileRoute } from '@tanstack/react-router'`,
54
54
  )
55
55
 
56
56
  // Extract route path and definition, then transform the route declaration
@@ -66,23 +66,8 @@ export function templatize(routeCode: string, routeFile: string) {
66
66
  const routeDefinition = routeMatch[2]
67
67
  code = code.replace(
68
68
  fullMatch,
69
- `<% if (codeRouter) { %>
70
- import type { RootRoute } from '@tanstack/react-router'
71
- import tailwind from '@tailwindcss/vite';
72
- <% } else { %>
73
- export const Route = createFileRoute('${path}')({${routeDefinition}})
74
- <% } %>`,
69
+ `export const Route = createFileRoute('${path}')({${routeDefinition}})`,
75
70
  )
76
-
77
- code += `
78
- <% if (codeRouter) { %>
79
- export default (parentRoute: RootRoute) => createRoute({
80
- path: '${path}',
81
- ${routeDefinition}
82
- getParentRoute: () => parentRoute,
83
- })
84
- <% } %>
85
- `
86
71
  } else {
87
72
  console.error(`No route found in the file: ${routeFile}`)
88
73
  }
@@ -108,20 +93,6 @@ export async function validateAddOnSetup(environment: Environment) {
108
93
  )
109
94
  process.exit(1)
110
95
  }
111
- if (!options.tailwind) {
112
- environment.error(
113
- 'This project is not using Tailwind CSS.',
114
- 'To create an add-on, the project must be created with Tailwind CSS.',
115
- )
116
- process.exit(1)
117
- }
118
- if (!options.typescript) {
119
- environment.error(
120
- 'This project is not using TypeScript.',
121
- 'To create an add-on, the project must be created with TypeScript.',
122
- )
123
- process.exit(1)
124
- }
125
96
  }
126
97
 
127
98
  export async function readOrGenerateAddOnInfo(
@@ -135,7 +106,6 @@ export async function readOrGenerateAddOnInfo(
135
106
  version: '0.0.1',
136
107
  description: 'Add-on',
137
108
  author: 'Jane Smith <jane.smith@example.com>',
138
- tailwind: options.tailwind || true,
139
109
  license: 'MIT',
140
110
  link: `https://github.com/jane-smith/${options.projectName}-add-on`,
141
111
  shadcnComponents: [],
@@ -152,7 +122,6 @@ export async function readOrGenerateAddOnInfo(
152
122
  },
153
123
  dependsOn: options.chosenAddOns,
154
124
  } as AddOnInfo)
155
- info.tailwind = options.tailwind || true
156
125
  return info
157
126
  }
158
127
 
@@ -49,8 +49,7 @@ export async function readOrGenerateStarterInfo(
49
49
  devDependencies: {},
50
50
  },
51
51
  dependsOn: options.chosenAddOns,
52
- typescript: options.typescript!,
53
- tailwind: options.tailwind!,
52
+ typescript: true,
54
53
  }
55
54
  }
56
55
 
@@ -37,13 +37,15 @@ export function getBinaryFile(content: string): string | null {
37
37
  }
38
38
 
39
39
  /**
40
- * Convert an absolute path to a clean relative path by removing a base directory.
41
40
  * Returns a path without leading ./ or / prefix.
42
41
  */
43
42
  export function toCleanPath(absolutePath: string, baseDir: string): string {
44
- let cleanPath = absolutePath.replace(baseDir, '')
45
- // Handle both Unix (/) and Windows (\) path separators
46
- if (cleanPath.startsWith('/') || cleanPath.startsWith('\\')) {
43
+ // Normalize both paths to use forward slashes for consistent comparison
44
+ const normalizedPath = absolutePath.replace(/\\/g, '/')
45
+ const normalizedBase = baseDir.replace(/\\/g, '/')
46
+ let cleanPath = normalizedPath.replace(normalizedBase, '')
47
+ // Handle leading path separator
48
+ if (cleanPath.startsWith('/')) {
47
49
  cleanPath = cleanPath.slice(1)
48
50
  }
49
51
  return cleanPath
@@ -54,12 +56,11 @@ export function relativePath(
54
56
  to: string,
55
57
  stripExtension: boolean = false,
56
58
  ) {
57
- const fixedOnWindows = from.startsWith('.\\')
58
- ? from.replace(/\\/g, '/')
59
- : from
60
- const cleanedFrom = fixedOnWindows.startsWith('./')
61
- ? fixedOnWindows.slice(2)
62
- : from
59
+ // Always normalize backslashes to forward slashes for Windows compatibility
60
+ const normalized = from.replace(/\\/g, '/')
61
+ const cleanedFrom = normalized.startsWith('./')
62
+ ? normalized.slice(2)
63
+ : normalized
63
64
  const cleanedTo = to.startsWith('./') ? to.slice(2) : to
64
65
 
65
66
  const fromSegments = cleanedFrom.split('/')
@@ -43,6 +43,6 @@
43
43
  "jsName": "AiDevtools"
44
44
  }
45
45
  ],
46
- "dependsOn": ["start", "store"],
46
+ "dependsOn": ["store"],
47
47
  "variables": []
48
48
  }
@@ -8,7 +8,7 @@
8
8
  "color": "#311C87",
9
9
  "priority": 15,
10
10
  "link": "https://github.com/apollographql/apollo-client-integrations/tree/main/packages/tanstack-start",
11
- "dependsOn": ["start"],
11
+
12
12
  "routes": [
13
13
  {
14
14
  "icon": "Network",
@@ -9,8 +9,6 @@
9
9
  "priority": 26,
10
10
  "link": "https://www.better-auth.com",
11
11
  "modes": ["file-router"],
12
- "tailwind": true,
13
- "dependsOn": ["start"],
14
12
  "routes": [
15
13
  {
16
14
  "url": "/demo/better-auth",
@@ -9,7 +9,6 @@
9
9
  "color": "#6C47FF",
10
10
  "priority": 150,
11
11
  "link": "https://clerk.com",
12
- "tailwind": true,
13
12
  "routes": [
14
13
  {
15
14
  "url": "/demo/clerk",
@@ -8,7 +8,7 @@
8
8
  "priority": 48,
9
9
  "modes": ["file-router"],
10
10
  "link": "https://tanstack.com/db/latest",
11
- "dependsOn": ["tanstack-query", "start"],
11
+ "dependsOn": ["tanstack-query"],
12
12
  "routes": [
13
13
  {
14
14
  "icon": "Database",
@@ -9,7 +9,7 @@
9
9
  "priority": 46,
10
10
  "link": "https://orm.drizzle.team/",
11
11
  "modes": ["file-router"],
12
- "dependsOn": ["start"],
12
+
13
13
  "options": {
14
14
  "database": {
15
15
  "type": "select",
@@ -18,5 +18,9 @@
18
18
  "db:push": "drizzle-kit push",
19
19
  "db:pull": "drizzle-kit pull",
20
20
  "db:studio": "drizzle-kit studio"
21
+ }<% if (addOnOption.drizzle.database === 'sqlite') { %>,
22
+ "pnpm": {
23
+ "onlyBuiltDependencies": ["better-sqlite3"]
21
24
  }
25
+ <% } %>
22
26
  }
@@ -17,6 +17,5 @@
17
17
  "path": "src/routes/demo.mcp-todos.tsx",
18
18
  "jsName": "MCPTodosDemo"
19
19
  }
20
- ],
21
- "dependsOn": ["start"]
20
+ ]
22
21
  }
@@ -1,4 +1,4 @@
1
- import postgresPlugin from '@neondatabase/vite-plugin-postgres'
1
+ import { postgresPlugin } from '@neondatabase/vite-plugin-postgres'
2
2
 
3
3
  export default postgresPlugin({
4
4
  seed: {
@@ -24,6 +24,5 @@
24
24
  "jsName": "neon",
25
25
  "path": "neon-vite-plugin.ts"
26
26
  }
27
- ],
28
- "dependsOn": ["start"]
27
+ ]
29
28
  }
@@ -4,7 +4,7 @@
4
4
  "phase": "add-on",
5
5
  "modes": ["file-router"],
6
6
  "link": "https://orpc.unnoq.com/",
7
- "dependsOn": ["tanstack-query", "start"],
7
+ "dependsOn": ["tanstack-query"],
8
8
  "type": "add-on",
9
9
  "category": "api",
10
10
  "color": "#FF6B6B",
@@ -7,7 +7,7 @@
7
7
  "category": "i18n",
8
8
  "color": "#14B8A6",
9
9
  "priority": 30,
10
- "link": "https://github.com/paraglidejs/paraglide-js",
10
+ "link": "https://github.com/opral/paraglide-js",
11
11
  "routes": [
12
12
  {
13
13
  "icon": "Languages",
@@ -9,7 +9,7 @@
9
9
  "priority": 120,
10
10
  "link": "https://www.prisma.io/",
11
11
  "modes": ["file-router"],
12
- "dependsOn": ["start"],
12
+
13
13
  "postInitSpecialSteps": ["post-init-script"],
14
14
  "options": {
15
15
  "database": {
@@ -17,5 +17,9 @@
17
17
  "db:migrate": "dotenv -e .env.local -- prisma migrate dev",
18
18
  "db:studio": "dotenv -e .env.local -- prisma studio",
19
19
  "db:seed": "dotenv -e .env.local -- prisma db seed"
20
+ }<% if (addOnOption.prisma.database === 'sqlite') { %>,
21
+ "pnpm": {
22
+ "onlyBuiltDependencies": ["better-sqlite3"]
20
23
  }
24
+ <% } %>
21
25
  }
@@ -15,6 +15,5 @@
15
15
  "path": "src/routes/demo.sentry.testing.tsx",
16
16
  "jsName": "SentryDemo"
17
17
  }
18
- ],
19
- "dependsOn": ["start"]
18
+ ]
20
19
  }
@@ -4,7 +4,7 @@
4
4
  "phase": "add-on",
5
5
  "modes": ["file-router"],
6
6
  "link": "https://trpc.io/",
7
- "dependsOn": ["tanstack-query", "start"],
7
+ "dependsOn": ["tanstack-query"],
8
8
  "type": "add-on",
9
9
  "category": "api",
10
10
  "color": "#2596BE",