@tanstack/create 0.49.3 → 0.59.4
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/CHANGELOG.md +597 -0
- package/dist/add-ons.js +42 -2
- package/dist/add-to-app.js +36 -7
- package/dist/custom-add-ons/add-on.js +2 -26
- package/dist/custom-add-ons/starter.js +1 -2
- package/dist/file-helpers.js +11 -10
- package/dist/frameworks/react/add-ons/ai/info.json +1 -1
- package/dist/frameworks/react/add-ons/apollo-client/info.json +1 -1
- package/dist/frameworks/react/add-ons/better-auth/info.json +0 -2
- package/dist/frameworks/react/add-ons/clerk/info.json +0 -1
- package/dist/frameworks/react/add-ons/db/info.json +1 -1
- package/dist/frameworks/react/add-ons/drizzle/info.json +1 -1
- package/dist/frameworks/react/add-ons/drizzle/package.json.ejs +4 -0
- package/dist/frameworks/react/add-ons/mcp/info.json +1 -2
- package/dist/frameworks/react/add-ons/neon/assets/neon-vite-plugin.ts +1 -1
- package/dist/frameworks/react/add-ons/neon/info.json +1 -2
- package/dist/frameworks/react/add-ons/oRPC/info.json +1 -1
- package/dist/frameworks/react/add-ons/paraglide/info.json +1 -1
- package/dist/frameworks/react/add-ons/prisma/info.json +1 -1
- package/dist/frameworks/react/add-ons/prisma/package.json.ejs +4 -0
- package/dist/frameworks/react/add-ons/sentry/info.json +1 -2
- package/dist/frameworks/react/add-ons/tRPC/info.json +1 -1
- package/dist/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +1 -29
- package/dist/frameworks/react/add-ons/workos/info.json +0 -1
- package/dist/frameworks/react/hosts/cloudflare/info.json +0 -1
- package/dist/frameworks/react/hosts/netlify/info.json +0 -1
- package/dist/frameworks/react/hosts/nitro/info.json +0 -1
- package/dist/frameworks/react/hosts/railway/info.json +0 -1
- package/dist/frameworks/react/index.js +1 -6
- package/dist/frameworks/react/project/base/README.md.ejs +86 -436
- package/dist/frameworks/react/project/base/_dot_gitignore +4 -0
- package/dist/frameworks/react/project/base/package.json +8 -5
- package/dist/frameworks/react/project/base/src/components/Header.tsx.ejs +2 -32
- package/dist/frameworks/react/project/base/src/routes/__root.tsx.ejs +4 -44
- package/dist/frameworks/react/project/base/src/routes/index.tsx.ejs +99 -61
- package/dist/frameworks/react/project/base/src/styles.css.ejs +3 -3
- package/dist/frameworks/react/project/base/tsconfig.json.ejs +1 -1
- package/dist/frameworks/react/project/base/vite.config.ts.ejs +33 -27
- package/dist/frameworks/react/project/packages.json +2 -2
- package/dist/frameworks/solid/add-ons/better-auth/info.json +1 -1
- package/dist/frameworks/solid/hosts/cloudflare/info.json +0 -1
- package/dist/frameworks/solid/hosts/netlify/info.json +0 -1
- package/dist/frameworks/solid/hosts/nitro/info.json +0 -1
- package/dist/frameworks/solid/hosts/railway/info.json +0 -1
- package/dist/frameworks/solid/index.js +1 -6
- package/dist/frameworks/solid/project/base/README.md.ejs +43 -117
- package/dist/frameworks/solid/project/base/_dot_gitignore +4 -0
- package/dist/frameworks/solid/project/base/package.json +8 -3
- package/dist/frameworks/solid/project/base/src/components/Header.tsx.ejs +2 -25
- package/dist/frameworks/solid/project/base/src/routes/__root.tsx.ejs +3 -30
- package/dist/frameworks/solid/project/base/src/routes/index.tsx.ejs +97 -35
- package/dist/frameworks/solid/project/base/tsconfig.json.ejs +1 -1
- package/dist/frameworks/solid/project/base/vite.config.ts.ejs +15 -20
- package/dist/frameworks/solid/project/packages.json +2 -2
- package/dist/frameworks.js +0 -1
- package/dist/package-json.js +6 -10
- package/dist/template-file.js +21 -7
- package/dist/types/custom-add-ons/add-on.d.ts +1 -1
- package/dist/types/file-helpers.d.ts +0 -1
- package/dist/types/types.d.ts +12 -12
- package/dist/types.js +1 -2
- package/package.json +1 -1
- package/src/add-ons.ts +54 -2
- package/src/add-to-app.ts +42 -7
- package/src/custom-add-ons/add-on.ts +2 -33
- package/src/custom-add-ons/starter.ts +1 -2
- package/src/file-helpers.ts +11 -10
- package/src/frameworks/react/add-ons/ai/info.json +1 -1
- package/src/frameworks/react/add-ons/apollo-client/info.json +1 -1
- package/src/frameworks/react/add-ons/better-auth/info.json +0 -2
- package/src/frameworks/react/add-ons/clerk/info.json +0 -1
- package/src/frameworks/react/add-ons/db/info.json +1 -1
- package/src/frameworks/react/add-ons/drizzle/info.json +1 -1
- package/src/frameworks/react/add-ons/drizzle/package.json.ejs +4 -0
- package/src/frameworks/react/add-ons/mcp/info.json +1 -2
- package/src/frameworks/react/add-ons/neon/assets/neon-vite-plugin.ts +1 -1
- package/src/frameworks/react/add-ons/neon/info.json +1 -2
- package/src/frameworks/react/add-ons/oRPC/info.json +1 -1
- package/src/frameworks/react/add-ons/paraglide/info.json +1 -1
- package/src/frameworks/react/add-ons/prisma/info.json +1 -1
- package/src/frameworks/react/add-ons/prisma/package.json.ejs +4 -0
- package/src/frameworks/react/add-ons/sentry/info.json +1 -2
- package/src/frameworks/react/add-ons/tRPC/info.json +1 -1
- package/src/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +1 -29
- package/src/frameworks/react/add-ons/workos/info.json +0 -1
- package/src/frameworks/react/hosts/cloudflare/info.json +0 -1
- package/src/frameworks/react/hosts/netlify/info.json +0 -1
- package/src/frameworks/react/hosts/nitro/info.json +0 -1
- package/src/frameworks/react/hosts/railway/info.json +0 -1
- package/src/frameworks/react/index.ts +1 -6
- package/src/frameworks/react/project/base/README.md.ejs +86 -436
- package/src/frameworks/react/project/base/_dot_gitignore +4 -0
- package/src/frameworks/react/project/base/package.json +8 -5
- package/src/frameworks/react/project/base/src/components/Header.tsx.ejs +2 -32
- package/src/frameworks/react/project/base/src/routes/__root.tsx.ejs +4 -44
- package/src/frameworks/react/project/base/src/routes/index.tsx.ejs +99 -61
- package/src/frameworks/react/project/base/src/styles.css.ejs +3 -3
- package/src/frameworks/react/project/base/tsconfig.json.ejs +1 -1
- package/src/frameworks/react/project/base/vite.config.ts.ejs +33 -27
- package/src/frameworks/react/project/packages.json +2 -2
- package/src/frameworks/solid/add-ons/better-auth/info.json +1 -1
- package/src/frameworks/solid/hosts/cloudflare/info.json +0 -1
- package/src/frameworks/solid/hosts/netlify/info.json +0 -1
- package/src/frameworks/solid/hosts/nitro/info.json +0 -1
- package/src/frameworks/solid/hosts/railway/info.json +0 -1
- package/src/frameworks/solid/index.ts +1 -6
- package/src/frameworks/solid/project/base/README.md.ejs +43 -117
- package/src/frameworks/solid/project/base/_dot_gitignore +4 -0
- package/src/frameworks/solid/project/base/package.json +8 -3
- package/src/frameworks/solid/project/base/src/components/Header.tsx.ejs +2 -25
- package/src/frameworks/solid/project/base/src/routes/__root.tsx.ejs +3 -30
- package/src/frameworks/solid/project/base/src/routes/index.tsx.ejs +97 -35
- package/src/frameworks/solid/project/base/tsconfig.json.ejs +1 -1
- package/src/frameworks/solid/project/base/vite.config.ts.ejs +15 -20
- package/src/frameworks/solid/project/packages.json +2 -2
- package/src/frameworks.ts +0 -1
- package/src/package-json.ts +6 -10
- package/src/template-file.ts +27 -8
- package/src/types.ts +1 -2
- package/tests/add-to-app.test.ts +37 -0
- package/tests/file-helper.test.ts +23 -2
- package/tests/package-json.test.ts +32 -0
- package/tests/template-file.test.ts +28 -0
- package/dist/frameworks/react/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -31
- package/dist/frameworks/react/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/dist/frameworks/react/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -11
- package/dist/frameworks/react/add-ons/module-federation/info.json +0 -11
- package/dist/frameworks/react/add-ons/module-federation/package.json +0 -5
- package/dist/frameworks/react/add-ons/module-federation/small-logo.svg +0 -87
- package/dist/frameworks/react/add-ons/start/assets/_dot_gitignore.append +0 -3
- package/dist/frameworks/react/add-ons/start/assets/src/data/demo.punk-songs.ts +0 -13
- package/dist/frameworks/react/add-ons/start/assets/src/router.tsx.ejs +0 -77
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/api.names.ts +0 -10
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/api.tq-todos.ts.ejs +0 -35
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.api-request.tsx.ejs +0 -68
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.css.ejs +0 -43
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.server-funcs.tsx.ejs +0 -183
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.data-only.tsx.ejs +0 -55
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.full-ssr.tsx.ejs +0 -55
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.index.tsx.ejs +0 -62
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.spa-mode.tsx.ejs +0 -62
- package/dist/frameworks/react/add-ons/start/assets/src/routes/index.tsx.ejs +0 -142
- package/dist/frameworks/react/add-ons/start/assets/src/server.ts.ejs +0 -9
- package/dist/frameworks/react/add-ons/start/assets/vite.config.ts.ejs +0 -40
- package/dist/frameworks/react/add-ons/start/info.json +0 -61
- package/dist/frameworks/react/add-ons/start/package.json +0 -12
- package/dist/frameworks/react/add-ons/start/small-logo.svg +0 -1
- package/dist/frameworks/react/project/base/index.html.ejs +0 -20
- package/dist/frameworks/react/project/base/src/App.css.ejs +0 -38
- package/dist/frameworks/react/project/base/src/App.tsx.ejs +0 -63
- package/dist/frameworks/react/project/base/src/components/Header.css.ejs +0 -18
- package/dist/frameworks/react/project/base/src/logo.svg +0 -12
- package/dist/frameworks/react/project/base/src/main.tsx.ejs +0 -166
- package/dist/frameworks/react/project/base/src/reportWebVitals.ts.ejs +0 -28
- package/dist/frameworks/solid/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -27
- package/dist/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/dist/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -9
- package/dist/frameworks/solid/add-ons/module-federation/info.json +0 -10
- package/dist/frameworks/solid/add-ons/module-federation/package.json +0 -5
- package/dist/frameworks/solid/add-ons/module-federation/small-logo.svg +0 -87
- package/dist/frameworks/solid/add-ons/start/assets/public/tanstack-circle-logo.png +0 -0
- package/dist/frameworks/solid/add-ons/start/assets/public/tanstack-word-logo-white.svg +0 -1
- package/dist/frameworks/solid/add-ons/start/assets/src/router.tsx.ejs +0 -30
- package/dist/frameworks/solid/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx +0 -49
- package/dist/frameworks/solid/add-ons/start/assets/src/routes/index.tsx.ejs +0 -138
- package/dist/frameworks/solid/add-ons/start/assets/vite.config.ts.ejs +0 -22
- package/dist/frameworks/solid/add-ons/start/info.json +0 -18
- package/dist/frameworks/solid/add-ons/start/package.json +0 -15
- package/dist/frameworks/solid/add-ons/start/small-logo.svg +0 -1
- package/dist/frameworks/solid/project/base/index.html.ejs +0 -20
- package/dist/frameworks/solid/project/base/src/App.css.ejs +0 -38
- package/dist/frameworks/solid/project/base/src/App.tsx.ejs +0 -34
- package/dist/frameworks/solid/project/base/src/logo.svg +0 -120
- package/dist/frameworks/solid/project/base/src/main.tsx.ejs +0 -126
- package/src/frameworks/react/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -31
- package/src/frameworks/react/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/src/frameworks/react/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -11
- package/src/frameworks/react/add-ons/module-federation/info.json +0 -11
- package/src/frameworks/react/add-ons/module-federation/package.json +0 -5
- package/src/frameworks/react/add-ons/module-federation/small-logo.svg +0 -87
- package/src/frameworks/react/add-ons/start/assets/_dot_gitignore.append +0 -3
- package/src/frameworks/react/add-ons/start/assets/src/data/demo.punk-songs.ts +0 -13
- package/src/frameworks/react/add-ons/start/assets/src/router.tsx.ejs +0 -77
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/api.names.ts +0 -10
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/api.tq-todos.ts.ejs +0 -35
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.api-request.tsx.ejs +0 -68
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.css.ejs +0 -43
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.server-funcs.tsx.ejs +0 -183
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.data-only.tsx.ejs +0 -55
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.full-ssr.tsx.ejs +0 -55
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.index.tsx.ejs +0 -62
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.spa-mode.tsx.ejs +0 -62
- package/src/frameworks/react/add-ons/start/assets/src/routes/index.tsx.ejs +0 -142
- package/src/frameworks/react/add-ons/start/assets/src/server.ts.ejs +0 -9
- package/src/frameworks/react/add-ons/start/assets/vite.config.ts.ejs +0 -40
- package/src/frameworks/react/add-ons/start/info.json +0 -61
- package/src/frameworks/react/add-ons/start/package.json +0 -12
- package/src/frameworks/react/add-ons/start/small-logo.svg +0 -1
- package/src/frameworks/react/project/base/index.html.ejs +0 -20
- package/src/frameworks/react/project/base/src/App.css.ejs +0 -38
- package/src/frameworks/react/project/base/src/App.tsx.ejs +0 -63
- package/src/frameworks/react/project/base/src/components/Header.css.ejs +0 -18
- package/src/frameworks/react/project/base/src/logo.svg +0 -12
- package/src/frameworks/react/project/base/src/main.tsx.ejs +0 -166
- package/src/frameworks/react/project/base/src/reportWebVitals.ts.ejs +0 -28
- package/src/frameworks/solid/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -27
- package/src/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/src/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -9
- package/src/frameworks/solid/add-ons/module-federation/info.json +0 -10
- package/src/frameworks/solid/add-ons/module-federation/package.json +0 -5
- package/src/frameworks/solid/add-ons/module-federation/small-logo.svg +0 -87
- package/src/frameworks/solid/add-ons/start/assets/public/tanstack-circle-logo.png +0 -0
- package/src/frameworks/solid/add-ons/start/assets/public/tanstack-word-logo-white.svg +0 -1
- package/src/frameworks/solid/add-ons/start/assets/src/router.tsx.ejs +0 -30
- package/src/frameworks/solid/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx +0 -49
- package/src/frameworks/solid/add-ons/start/assets/src/routes/index.tsx.ejs +0 -138
- package/src/frameworks/solid/add-ons/start/assets/vite.config.ts.ejs +0 -22
- package/src/frameworks/solid/add-ons/start/info.json +0 -18
- package/src/frameworks/solid/add-ons/start/package.json +0 -15
- package/src/frameworks/solid/add-ons/start/small-logo.svg +0 -1
- package/src/frameworks/solid/project/base/index.html.ejs +0 -20
- package/src/frameworks/solid/project/base/src/App.css.ejs +0 -38
- package/src/frameworks/solid/project/base/src/App.tsx.ejs +0 -34
- package/src/frameworks/solid/project/base/src/logo.svg +0 -120
- 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;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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()
|
|
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
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 =
|
|
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
|
-
|
|
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
|
|
100
|
-
const relativeFile = file.replace(cwd, '')
|
|
134
|
+
for (const relativeFile of Object.keys(relativeOutputFiles)) {
|
|
101
135
|
if (currentFiles[relativeFile]) {
|
|
102
|
-
if (currentFiles[relativeFile] !==
|
|
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
|
|
122
|
-
|
|
123
|
-
|
|
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 =
|
|
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 {
|
|
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
|
-
|
|
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
|
|
package/src/file-helpers.ts
CHANGED
|
@@ -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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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('/')
|
|
@@ -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
|
}
|