@vexblocks/cli 1.1.2 → 1.1.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 +53 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -33,6 +33,7 @@ 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/backend/package.json",
|
|
36
37
|
"packages/cms-shared/src/types/generated.ts",
|
|
37
38
|
"packages/backend/emails/change-email-template.ts",
|
|
38
39
|
"packages/backend/emails/otp-email-template.ts",
|
|
@@ -92,6 +93,47 @@ async function getPackageManager(cwd) {
|
|
|
92
93
|
}
|
|
93
94
|
return "npm";
|
|
94
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
|
+
}
|
|
95
137
|
|
|
96
138
|
// src/utils/github.ts
|
|
97
139
|
import path2 from "path";
|
|
@@ -508,6 +550,17 @@ async function installBackendPackage(targetPath, sourcePath, spinner) {
|
|
|
508
550
|
spinner.text = `Installing backend... ${pc2.dim(file)}`;
|
|
509
551
|
});
|
|
510
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
|
+
}
|
|
511
564
|
}
|
|
512
565
|
function showNextSteps(packages) {
|
|
513
566
|
const packageManager = "pnpm";
|