hiepdh-playable-toolkit 2.1.4 → 2.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/package.json +1 -1
- package/setup.js +44 -17
package/package.json
CHANGED
package/setup.js
CHANGED
|
@@ -123,39 +123,66 @@ function copyFolderRecursive(source, target) {
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
function reviveProject(projectRoot, toolkitRoot, version = "3x") {
|
|
126
|
-
console.log(` Đang
|
|
126
|
+
console.log(` Đang khôi phục môi trường cho Cocos ${version}...`);
|
|
127
127
|
|
|
128
128
|
const targetPkgPath = path.join(projectRoot, "package.json");
|
|
129
129
|
const targetLockPath = path.join(projectRoot, "package-lock.json");
|
|
130
|
+
const templateDir = path.join(toolkitRoot, version, "templates");
|
|
130
131
|
|
|
132
|
+
// 1. Ưu tiên đưa file package-lock.json mẫu vào trước
|
|
131
133
|
if (!fs.existsSync(targetLockPath)) {
|
|
132
|
-
const sourceLock = path.join(
|
|
133
|
-
toolkitRoot,
|
|
134
|
-
version,
|
|
135
|
-
"templates",
|
|
136
|
-
"package-lock.json"
|
|
137
|
-
);
|
|
134
|
+
const sourceLock = path.join(templateDir, "package-lock.json");
|
|
138
135
|
if (fs.existsSync(sourceLock)) {
|
|
139
136
|
fs.copySync(sourceLock, targetLockPath);
|
|
140
|
-
console.log(" Đã
|
|
137
|
+
console.log(" Đã khôi phục file lock từ Toolkit.");
|
|
138
|
+
} else {
|
|
139
|
+
console.error(" Lỗi: Toolkit không có file package-lock mẫu!");
|
|
140
|
+
return;
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
|
|
145
|
-
|
|
144
|
+
// 2. Tái tạo hoặc cập nhật package.json
|
|
145
|
+
let targetPkg = fs.existsSync(targetPkgPath)
|
|
146
|
+
? fs.readJsonSync(targetPkgPath)
|
|
147
|
+
: {};
|
|
148
|
+
const lockData = fs.readJsonSync(targetLockPath);
|
|
149
|
+
|
|
150
|
+
// Trích xuất "linh hồn" của package.json từ file lock (định dạng npm 7+)
|
|
151
|
+
const rootInfo = lockData.packages && lockData.packages[""];
|
|
152
|
+
|
|
153
|
+
if (rootInfo) {
|
|
154
|
+
console.log(" Đang trích xuất dependencies từ file lock...");
|
|
155
|
+
targetPkg.name = targetPkg.name || rootInfo.name || "reconstructed-project";
|
|
156
|
+
targetPkg.version = targetPkg.version || rootInfo.version || "1.0.0";
|
|
157
|
+
targetPkg.dependencies = {
|
|
158
|
+
...rootInfo.dependencies,
|
|
159
|
+
...targetPkg.dependencies,
|
|
160
|
+
};
|
|
161
|
+
targetPkg.devDependencies = {
|
|
162
|
+
...rootInfo.devDependencies,
|
|
163
|
+
...targetPkg.devDependencies,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// 3. Bơm thêm các thư viện bắt buộc của Toolkit
|
|
168
|
+
targetPkg.devDependencies = {
|
|
169
|
+
...targetPkg.devDependencies,
|
|
146
170
|
"adm-zip": "^0.5.10",
|
|
147
171
|
"fs-extra": "^11.1.0",
|
|
148
172
|
};
|
|
149
|
-
pkg.devDependencies = { ...pkg.devDependencies, ...toolkitDeps };
|
|
150
|
-
fs.writeJsonSync(targetPkgPath, pkg, { spaces: 2 });
|
|
151
173
|
|
|
174
|
+
// 4. Lưu lại file package.json hoàn chỉnh
|
|
175
|
+
fs.writeJsonSync(targetPkgPath, targetPkg, { spaces: 2 });
|
|
176
|
+
console.log(" File package.json đã được tái tạo thành công.");
|
|
177
|
+
|
|
178
|
+
// 5. Kích hoạt cài đặt
|
|
152
179
|
try {
|
|
153
|
-
console.log(" Đang
|
|
180
|
+
console.log(" Đang nạp lại toàn bộ node_modules (npm install)...");
|
|
181
|
+
// Sử dụng --package-lock-only nếu bạn chỉ muốn cập nhật cấu trúc,
|
|
182
|
+
// nhưng ở đây ta cần thư mục node_modules nên dùng install thuần.
|
|
154
183
|
execSync("npm install", { cwd: projectRoot, stdio: "inherit" });
|
|
155
|
-
console.log(
|
|
156
|
-
" Hoàn tất! node_modules đã đầy đủ và file lock đã được cập nhật."
|
|
157
|
-
);
|
|
184
|
+
console.log(" Hoàn tất! node_modules đã hồi sinh.");
|
|
158
185
|
} catch (e) {
|
|
159
|
-
console.error(" Lỗi khi
|
|
186
|
+
console.error(" Lỗi khi cài đặt: " + e.message);
|
|
160
187
|
}
|
|
161
188
|
}
|