create-vobase 0.2.2 → 0.2.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/dist/index.js +22 -9
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8,6 +8,10 @@ import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
|
8
8
|
import { randomBytes } from "crypto";
|
|
9
9
|
import { basename, resolve } from "path";
|
|
10
10
|
import { mkdirSync } from "fs";
|
|
11
|
+
var green = (s) => `\x1B[32m${s}\x1B[0m`;
|
|
12
|
+
var dim = (s) => `\x1B[2m${s}\x1B[0m`;
|
|
13
|
+
var bold = (s) => `\x1B[1m${s}\x1B[0m`;
|
|
14
|
+
var cyan = (s) => `\x1B[36m${s}\x1B[0m`;
|
|
11
15
|
var name = process.argv[2];
|
|
12
16
|
if (!name) {
|
|
13
17
|
console.error("Usage: bun create vobase <project-name>");
|
|
@@ -15,11 +19,14 @@ if (!name) {
|
|
|
15
19
|
}
|
|
16
20
|
var dest = resolve(process.cwd(), name);
|
|
17
21
|
var projectName = basename(dest);
|
|
18
|
-
console.log(`
|
|
22
|
+
console.log(`
|
|
23
|
+
${bold("Creating vobase project")} in ${cyan(dest)}
|
|
24
|
+
`);
|
|
19
25
|
await downloadTemplate("github:vobase/vobase/packages/template", {
|
|
20
26
|
dir: dest,
|
|
21
27
|
force: false
|
|
22
28
|
});
|
|
29
|
+
console.log(`${green("\u2713")} Downloaded template`);
|
|
23
30
|
var pkgPath = resolve(dest, "package.json");
|
|
24
31
|
var pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
25
32
|
pkg.name = projectName;
|
|
@@ -32,12 +39,13 @@ for (const depField of ["dependencies", "devDependencies"]) {
|
|
|
32
39
|
if (typeof version === "string" && version.startsWith("workspace:")) {
|
|
33
40
|
const latest = (await $`npm view ${dep} version`.text()).trim();
|
|
34
41
|
deps[dep] = `^${latest}`;
|
|
35
|
-
console.log(` ${dep}: workspace:* \u2192 ^${latest}`);
|
|
42
|
+
console.log(dim(` ${dep}: workspace:* \u2192 ^${latest}`));
|
|
36
43
|
}
|
|
37
44
|
}
|
|
38
45
|
}
|
|
39
46
|
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + `
|
|
40
47
|
`);
|
|
48
|
+
console.log(`${green("\u2713")} Resolved dependencies`);
|
|
41
49
|
var envExample = resolve(dest, ".env.example");
|
|
42
50
|
var envFile = resolve(dest, ".env");
|
|
43
51
|
if (existsSync(envExample) && !existsSync(envFile)) {
|
|
@@ -45,19 +53,24 @@ if (existsSync(envExample) && !existsSync(envFile)) {
|
|
|
45
53
|
const secret = randomBytes(32).toString("base64url");
|
|
46
54
|
env = env.replace(/AUTH_SECRET=.*/, `AUTH_SECRET=${secret}`);
|
|
47
55
|
writeFileSync(envFile, env);
|
|
56
|
+
console.log(`${green("\u2713")} Generated .env with AUTH_SECRET`);
|
|
48
57
|
}
|
|
49
58
|
mkdirSync(resolve(dest, "data"), { recursive: true });
|
|
50
|
-
console.log(
|
|
59
|
+
console.log(`
|
|
60
|
+
${bold("Installing dependencies...")}`);
|
|
51
61
|
await $`bun install`.cwd(dest);
|
|
52
|
-
console.log("
|
|
62
|
+
console.log(`${green("\u2713")} Dependencies installed`);
|
|
63
|
+
console.log(`${bold("Generating routes...")}`);
|
|
53
64
|
await $`bun run scripts/generate.ts`.cwd(dest);
|
|
54
|
-
console.log("
|
|
65
|
+
console.log(`${green("\u2713")} Routes generated`);
|
|
66
|
+
console.log(`${bold("Setting up database...")}`);
|
|
55
67
|
await $`bun run db:push`.cwd(dest);
|
|
56
|
-
console.log("
|
|
68
|
+
console.log(`${green("\u2713")} Database schema pushed`);
|
|
69
|
+
console.log(`${bold("Seeding admin user...")}`);
|
|
57
70
|
await $`bun run seed`.cwd(dest);
|
|
58
71
|
console.log(`
|
|
59
|
-
Done! Your vobase project is ready.
|
|
72
|
+
${green("Done!")} Your vobase project is ready.
|
|
60
73
|
|
|
61
|
-
cd ${name}
|
|
62
|
-
bun run dev
|
|
74
|
+
${dim("$")} cd ${name}
|
|
75
|
+
${dim("$")} bun run dev
|
|
63
76
|
`);
|