@vexblocks/cli 1.1.1 → 1.1.3

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 (2) hide show
  1. package/dist/index.js +66 -2
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -33,7 +33,12 @@ var PROTECTED_FILES = [
33
33
  "packages/backend/convex/cms/vexblocks.config.ts",
34
34
  "packages/backend/.env",
35
35
  "packages/backend/.env.local",
36
- "packages/cms-shared/src/types/generated.ts"
36
+ "packages/backend/package.json",
37
+ "packages/cms-shared/src/types/generated.ts",
38
+ "packages/backend/emails/change-email-template.ts",
39
+ "packages/backend/emails/otp-email-template.ts",
40
+ "packages/backend/emails/delete-account-template.ts",
41
+ "packages/backend/emails/invite-email-template.ts"
37
42
  ];
38
43
  var PACKAGE_DEPENDENCIES = {
39
44
  cms: ["backend", "shared"],
@@ -88,6 +93,47 @@ async function getPackageManager(cwd) {
88
93
  }
89
94
  return "npm";
90
95
  }
96
+ async function mergePackageJson(targetPath, sourcePackageJson) {
97
+ let existingPackageJson = {};
98
+ if (await fs.pathExists(targetPath)) {
99
+ existingPackageJson = await fs.readJson(targetPath);
100
+ }
101
+ const mergedPackageJson = {
102
+ // Preserve user's name and version if they exist
103
+ name: existingPackageJson.name || sourcePackageJson.name,
104
+ version: existingPackageJson.version || sourcePackageJson.version,
105
+ private: sourcePackageJson.private,
106
+ // Merge scripts (source scripts take precedence for VexBlocks-specific scripts)
107
+ scripts: {
108
+ ...existingPackageJson.scripts,
109
+ ...sourcePackageJson.scripts
110
+ },
111
+ // Merge dependencies (source versions take precedence)
112
+ dependencies: {
113
+ ...existingPackageJson.dependencies,
114
+ ...sourcePackageJson.dependencies
115
+ },
116
+ // Merge devDependencies (source versions take precedence)
117
+ devDependencies: {
118
+ ...existingPackageJson.devDependencies,
119
+ ...sourcePackageJson.devDependencies
120
+ },
121
+ // Preserve any other custom fields from existing package.json
122
+ ...Object.fromEntries(
123
+ Object.entries(existingPackageJson).filter(
124
+ ([key]) => ![
125
+ "name",
126
+ "version",
127
+ "private",
128
+ "scripts",
129
+ "dependencies",
130
+ "devDependencies"
131
+ ].includes(key)
132
+ )
133
+ )
134
+ };
135
+ await fs.writeJson(targetPath, mergedPackageJson, { spaces: 2 });
136
+ }
91
137
 
92
138
  // src/utils/github.ts
93
139
  import path2 from "path";
@@ -474,7 +520,14 @@ async function installBackendPackage(targetPath, sourcePath, spinner) {
474
520
  const hasSchema = await fs4.pathExists(existingSchemaPath);
475
521
  if (hasSchema) {
476
522
  spinner.text = "Detected existing Convex schema, merging CMS tables...";
477
- const cmsFiles = ["convex/cms", "convex/auth.ts", "convex/auth.config.ts", "convex/http.ts", "better-auth", "emails"];
523
+ const cmsFiles = [
524
+ "convex/cms",
525
+ "convex/auth.ts",
526
+ "convex/auth.config.ts",
527
+ "convex/http.ts",
528
+ "better-auth",
529
+ "emails"
530
+ ];
478
531
  for (const file of cmsFiles) {
479
532
  const fullSourcePath = `${sourcePath}/${file}`;
480
533
  const fullTargetPath = path4.join(targetPath, file);
@@ -497,6 +550,17 @@ async function installBackendPackage(targetPath, sourcePath, spinner) {
497
550
  spinner.text = `Installing backend... ${pc2.dim(file)}`;
498
551
  });
499
552
  }
553
+ spinner.text = "Merging package.json...";
554
+ try {
555
+ const sourcePackageJsonContent = await fetchFile(
556
+ `${sourcePath}/package.json`
557
+ );
558
+ const sourcePackageJson = JSON.parse(sourcePackageJsonContent);
559
+ const targetPackageJsonPath = path4.join(targetPath, "package.json");
560
+ await mergePackageJson(targetPackageJsonPath, sourcePackageJson);
561
+ } catch {
562
+ spinner.warn("Could not merge package.json, skipping");
563
+ }
500
564
  }
501
565
  function showNextSteps(packages) {
502
566
  const packageManager = "pnpm";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vexblocks/cli",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "description": "CLI for adding VexBlocks Headless CMS to your Turborepo project",
5
5
  "keywords": [
6
6
  "cms",