create-better-fullstack 1.4.15 → 1.4.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{src-D-YGZXlq.mjs → src-BVbxA2WC.mjs} +37 -9
- package/package.json +32 -7
package/dist/cli.mjs
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as builder, c as createVirtual, d as history, f as router, i as add, l as docs, n as TEMPLATE_COUNT, o as create, p as sponsors, r as VirtualFileSystem, s as createBtsCli, t as EMBEDDED_TEMPLATES, u as generateVirtualProject } from "./src-
|
|
2
|
+
import { a as builder, c as createVirtual, d as history, f as router, i as add, l as docs, n as TEMPLATE_COUNT, o as create, p as sponsors, r as VirtualFileSystem, s as createBtsCli, t as EMBEDDED_TEMPLATES, u as generateVirtualProject } from "./src-BVbxA2WC.mjs";
|
|
3
3
|
|
|
4
4
|
export { EMBEDDED_TEMPLATES, TEMPLATE_COUNT, VirtualFileSystem, add, builder, create, createBtsCli, createVirtual, docs, generateVirtualProject, history, router, sponsors };
|
|
@@ -9,7 +9,7 @@ import envPaths from "env-paths";
|
|
|
9
9
|
import fs from "fs-extra";
|
|
10
10
|
import path from "node:path";
|
|
11
11
|
import { fileURLToPath } from "node:url";
|
|
12
|
-
import { ECOSYSTEM_GROUPS, EMBEDDED_TEMPLATES, EMBEDDED_TEMPLATES as EMBEDDED_TEMPLATES$1, TEMPLATE_COUNT, VirtualFileSystem, VirtualFileSystem as VirtualFileSystem$1, checkAllVersions, dependencyVersionMap, generateCliReport, generateVirtualProject, generateVirtualProject as generateVirtualProject$1, listEcosystems, processAddonTemplates, processAddonsDeps } from "@better-fullstack/template-generator";
|
|
12
|
+
import { ECOSYSTEM_GROUPS, EMBEDDED_TEMPLATES, EMBEDDED_TEMPLATES as EMBEDDED_TEMPLATES$1, TEMPLATE_COUNT, VirtualFileSystem, VirtualFileSystem as VirtualFileSystem$1, checkAllVersions, dependencyVersionMap, generateCliReport, generateVirtualProject, generateVirtualProject as generateVirtualProject$1, listEcosystems, processAddonTemplates, processAddonsDeps, validatePreflightConfig } from "@better-fullstack/template-generator";
|
|
13
13
|
import gradient from "gradient-string";
|
|
14
14
|
import path$1 from "path";
|
|
15
15
|
import { writeTreeToFilesystem } from "@better-fullstack/template-generator/fs-writer";
|
|
@@ -7053,6 +7053,26 @@ function validateConfigCompatibility(config, providedFlags, options) {
|
|
|
7053
7053
|
else validateConfigForProgrammaticUse(config);
|
|
7054
7054
|
}
|
|
7055
7055
|
|
|
7056
|
+
//#endregion
|
|
7057
|
+
//#region src/utils/preflight-display.ts
|
|
7058
|
+
function displayPreflightWarnings({ warnings }) {
|
|
7059
|
+
if (warnings.length === 0) return;
|
|
7060
|
+
const count = warnings.length;
|
|
7061
|
+
const lines = [pc.bold(pc.yellow(`${count} feature${count > 1 ? "s" : ""} will not generate templates:`)), ""];
|
|
7062
|
+
warnings.forEach((w, i) => {
|
|
7063
|
+
const selected = Array.isArray(w.selectedValue) ? w.selectedValue.join(", ") : w.selectedValue;
|
|
7064
|
+
lines.push(` ${pc.yellow(`${i + 1}.`)} ${pc.bold(w.featureDisplayName)} ${pc.dim(`(${selected})`)}`);
|
|
7065
|
+
lines.push(` ${w.reason}`);
|
|
7066
|
+
w.suggestions.forEach((s) => lines.push(` ${pc.green("•")} ${s}`));
|
|
7067
|
+
if (i < count - 1) lines.push("");
|
|
7068
|
+
});
|
|
7069
|
+
consola.box({
|
|
7070
|
+
title: pc.yellow("Pre-flight Check"),
|
|
7071
|
+
message: lines.join("\n"),
|
|
7072
|
+
style: { borderColor: "yellow" }
|
|
7073
|
+
});
|
|
7074
|
+
}
|
|
7075
|
+
|
|
7056
7076
|
//#endregion
|
|
7057
7077
|
//#region src/utils/file-formatter.ts
|
|
7058
7078
|
const formatOptions = {
|
|
@@ -8342,8 +8362,9 @@ async function displayPostInstallInstructions(config) {
|
|
|
8342
8362
|
if (polarInstructions) output += `\n${polarInstructions.trim()}\n`;
|
|
8343
8363
|
if (noOrmWarning) output += `\n${noOrmWarning.trim()}\n`;
|
|
8344
8364
|
if (bunWebNativeWarning) output += `\n${bunWebNativeWarning.trim()}\n`;
|
|
8345
|
-
output += `\n${pc.bold("
|
|
8346
|
-
output += pc.cyan("https://github.com/Marve10s/Better-Fullstack")
|
|
8365
|
+
output += `\n${pc.bold("Enjoying Better Fullstack?")} Help us grow — star the repo!\n`;
|
|
8366
|
+
output += `${pc.cyan("https://github.com/Marve10s/Better-Fullstack")}\n`;
|
|
8367
|
+
output += pc.dim("Your star helps other developers discover the project.");
|
|
8347
8368
|
consola$1.box(output);
|
|
8348
8369
|
}
|
|
8349
8370
|
function getNativeInstructions(isConvex, isBackendSelf, frontend, runCmd) {
|
|
@@ -8481,8 +8502,9 @@ function displayRustInstructions(config) {
|
|
|
8481
8502
|
output += `${pc.cyan("•")} Check: cargo check\n`;
|
|
8482
8503
|
output += `${pc.cyan("•")} Format: cargo fmt\n`;
|
|
8483
8504
|
output += `${pc.cyan("•")} Lint: cargo clippy\n`;
|
|
8484
|
-
output += `\n${pc.bold("
|
|
8485
|
-
output += pc.cyan("https://github.com/Marve10s/Better-Fullstack")
|
|
8505
|
+
output += `\n${pc.bold("Enjoying Better Fullstack?")} Help us grow — star the repo!\n`;
|
|
8506
|
+
output += `${pc.cyan("https://github.com/Marve10s/Better-Fullstack")}\n`;
|
|
8507
|
+
output += pc.dim("Your star helps other developers discover the project.");
|
|
8486
8508
|
consola$1.box(output);
|
|
8487
8509
|
}
|
|
8488
8510
|
function displayGoInstructions(config) {
|
|
@@ -8517,8 +8539,9 @@ function displayGoInstructions(config) {
|
|
|
8517
8539
|
output += `\n${pc.bold("Your project will be available at:")}\n`;
|
|
8518
8540
|
output += `${pc.cyan("•")} API: http://localhost:8080\n`;
|
|
8519
8541
|
if (goApi === "grpc-go") output += `${pc.cyan("•")} gRPC: localhost:50051\n`;
|
|
8520
|
-
output += `\n${pc.bold("
|
|
8521
|
-
output += pc.cyan("https://github.com/Marve10s/Better-Fullstack")
|
|
8542
|
+
output += `\n${pc.bold("Enjoying Better Fullstack?")} Help us grow — star the repo!\n`;
|
|
8543
|
+
output += `${pc.cyan("https://github.com/Marve10s/Better-Fullstack")}\n`;
|
|
8544
|
+
output += pc.dim("Your star helps other developers discover the project.");
|
|
8522
8545
|
consola$1.box(output);
|
|
8523
8546
|
}
|
|
8524
8547
|
function displayPythonInstructions(config) {
|
|
@@ -8562,8 +8585,9 @@ function displayPythonInstructions(config) {
|
|
|
8562
8585
|
output += `${pc.cyan("•")} Lint: uv run ruff check .\n`;
|
|
8563
8586
|
output += `\n${pc.bold("Your project will be available at:")}\n`;
|
|
8564
8587
|
output += `${pc.cyan("•")} API: http://localhost:8000\n`;
|
|
8565
|
-
output += `\n${pc.bold("
|
|
8566
|
-
output += pc.cyan("https://github.com/Marve10s/Better-Fullstack")
|
|
8588
|
+
output += `\n${pc.bold("Enjoying Better Fullstack?")} Help us grow — star the repo!\n`;
|
|
8589
|
+
output += `${pc.cyan("https://github.com/Marve10s/Better-Fullstack")}\n`;
|
|
8590
|
+
output += pc.dim("Your star helps other developers discover the project.");
|
|
8567
8591
|
consola$1.box(output);
|
|
8568
8592
|
}
|
|
8569
8593
|
|
|
@@ -8770,6 +8794,8 @@ async function createProjectHandler(input, options = {}) {
|
|
|
8770
8794
|
relativePath: finalPathInput
|
|
8771
8795
|
};
|
|
8772
8796
|
validateConfigCompatibility(config, providedFlags, cliInput);
|
|
8797
|
+
const yesPreflight = validatePreflightConfig(config);
|
|
8798
|
+
if (yesPreflight.hasWarnings && !isSilent()) displayPreflightWarnings(yesPreflight);
|
|
8773
8799
|
if (!isSilent()) {
|
|
8774
8800
|
log.info(pc.yellow("Using default/flag options (config prompts skipped):"));
|
|
8775
8801
|
log.message(displayConfig(config));
|
|
@@ -8784,6 +8810,8 @@ async function createProjectHandler(input, options = {}) {
|
|
|
8784
8810
|
}
|
|
8785
8811
|
config = await gatherConfig(flagConfig, finalBaseName, finalResolvedPath, finalPathInput);
|
|
8786
8812
|
}
|
|
8813
|
+
const preflight = validatePreflightConfig(config);
|
|
8814
|
+
if (preflight.hasWarnings && !isSilent()) displayPreflightWarnings(preflight);
|
|
8787
8815
|
await createProject(config, { manualDb: cliInput.manualDb ?? input.manualDb });
|
|
8788
8816
|
const reproducibleCommand = generateReproducibleCommand(config);
|
|
8789
8817
|
if (!isSilent()) log.success(pc.blue(`You can reproduce this setup with the following command:\n${reproducibleCommand}`));
|
package/package.json
CHANGED
|
@@ -1,30 +1,51 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-better-fullstack",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.16",
|
|
4
4
|
"description": "Scaffold production-ready fullstack apps in seconds. Pick your stack from 270+ options — the CLI wires everything together.",
|
|
5
5
|
"keywords": [
|
|
6
|
+
"angular",
|
|
7
|
+
"astro",
|
|
8
|
+
"authentication",
|
|
6
9
|
"better-auth",
|
|
7
10
|
"better-fullstack",
|
|
8
11
|
"biome",
|
|
9
12
|
"boilerplate",
|
|
13
|
+
"bun",
|
|
10
14
|
"cli",
|
|
15
|
+
"create",
|
|
16
|
+
"create-app",
|
|
17
|
+
"desktop",
|
|
18
|
+
"developer-tools",
|
|
19
|
+
"docker",
|
|
11
20
|
"drizzle",
|
|
12
21
|
"elysia",
|
|
13
22
|
"expo",
|
|
23
|
+
"fastapi",
|
|
14
24
|
"fullstack",
|
|
15
25
|
"go",
|
|
16
26
|
"golang",
|
|
17
27
|
"hono",
|
|
28
|
+
"mobile",
|
|
18
29
|
"monorepo",
|
|
30
|
+
"nextjs",
|
|
31
|
+
"nuxt",
|
|
32
|
+
"payments",
|
|
33
|
+
"pnpm",
|
|
19
34
|
"prisma",
|
|
35
|
+
"project-generator",
|
|
20
36
|
"pwa",
|
|
21
37
|
"python",
|
|
22
38
|
"react",
|
|
23
39
|
"react-native",
|
|
24
40
|
"rust",
|
|
41
|
+
"scaffold",
|
|
25
42
|
"scaffolding",
|
|
26
43
|
"shadcn",
|
|
44
|
+
"solid",
|
|
27
45
|
"starter",
|
|
46
|
+
"starter-kit",
|
|
47
|
+
"svelte",
|
|
48
|
+
"sveltekit",
|
|
28
49
|
"tailwind",
|
|
29
50
|
"tanstack",
|
|
30
51
|
"tauri",
|
|
@@ -33,6 +54,9 @@
|
|
|
33
54
|
"turborepo",
|
|
34
55
|
"type-safety",
|
|
35
56
|
"typescript",
|
|
57
|
+
"vite",
|
|
58
|
+
"vue",
|
|
59
|
+
"web-app",
|
|
36
60
|
"yarn"
|
|
37
61
|
],
|
|
38
62
|
"homepage": "https://better-fullstack.dev/",
|
|
@@ -75,7 +99,8 @@
|
|
|
75
99
|
"test:watch": "bun test --watch",
|
|
76
100
|
"test:coverage": "bun test --coverage",
|
|
77
101
|
"test:ci": "CI=1 bun test --bail=5",
|
|
78
|
-
"test:e2e": "E2E=1 bun test test/e2e/e2e.e2e.ts",
|
|
102
|
+
"test:e2e": "E2E=1 bun test test/e2e/e2e.e2e.ts --timeout 600000",
|
|
103
|
+
"test:integration": "bun test test/e2e/cli-interaction.test.ts test/e2e/cli-binary.test.ts",
|
|
79
104
|
"test:astro-combos": "bun run scripts/test-astro-combinations.ts",
|
|
80
105
|
"test:matrix": "MATRIX_MODE=batched bun test ./test/matrix/matrix-test.test.ts",
|
|
81
106
|
"test:matrix:fast": "MATRIX_MODE=sample MATRIX_SAMPLE=0.1 bun test ./test/matrix/matrix-test.test.ts",
|
|
@@ -83,11 +108,11 @@
|
|
|
83
108
|
"prepublishOnly": "npm run build"
|
|
84
109
|
},
|
|
85
110
|
"dependencies": {
|
|
86
|
-
"@better-fullstack/template-generator": "^1.4.
|
|
87
|
-
"@better-fullstack/types": "^1.4.
|
|
111
|
+
"@better-fullstack/template-generator": "^1.4.16",
|
|
112
|
+
"@better-fullstack/types": "^1.4.16",
|
|
88
113
|
"@clack/core": "^0.5.0",
|
|
89
114
|
"@clack/prompts": "^1.1.0",
|
|
90
|
-
"@orpc/server": "^1.13.
|
|
115
|
+
"@orpc/server": "^1.13.9",
|
|
91
116
|
"consola": "^3.4.2",
|
|
92
117
|
"env-paths": "^4.0.0",
|
|
93
118
|
"execa": "^9.6.1",
|
|
@@ -100,11 +125,11 @@
|
|
|
100
125
|
"tinyglobby": "^0.2.15",
|
|
101
126
|
"trpc-cli": "^0.12.1",
|
|
102
127
|
"ts-morph": "^27.0.2",
|
|
103
|
-
"yaml": "^2.8.
|
|
128
|
+
"yaml": "^2.8.3",
|
|
104
129
|
"zod": "^4.3.6"
|
|
105
130
|
},
|
|
106
131
|
"devDependencies": {
|
|
107
|
-
"@types/bun": "^1.3.
|
|
132
|
+
"@types/bun": "^1.3.11",
|
|
108
133
|
"@types/fs-extra": "^11.0.4",
|
|
109
134
|
"@types/node": "^25.5.0",
|
|
110
135
|
"publint": "^0.3.18",
|