hiepdh-playable-toolkit 2.2.4 → 2.4.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/setup.js +42 -42
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hiepdh-playable-toolkit",
3
- "version": "2.2.4",
3
+ "version": "2.4.4",
4
4
  "main": "setup.js",
5
5
  "dependencies": {
6
6
  "fs-extra": "^11.1.0",
package/setup.js CHANGED
@@ -123,66 +123,66 @@ function copyFolderRecursive(source, target) {
123
123
  }
124
124
 
125
125
  function reviveProject(projectRoot, toolkitRoot, version = "3x") {
126
- console.log(` Đang khôi phục môi trường cho Cocos ${version}...`);
126
+ console.log(`🛠️ [Toolkit] Đang xử đồng bộ lockfile (v2 -> v3)...`);
127
127
 
128
128
  const targetPkgPath = path.join(projectRoot, "package.json");
129
129
  const targetLockPath = path.join(projectRoot, "package-lock.json");
130
130
  const templateDir = path.join(toolkitRoot, version, "templates");
131
+ const sourceLockPath = path.join(templateDir, "package-lock.json");
131
132
 
132
- // 1. Ưu tiên đưa file package-lock.json mẫu vào trước
133
- if (!fs.existsSync(targetLockPath)) {
134
- const sourceLock = path.join(templateDir, "package-lock.json");
135
- if (fs.existsSync(sourceLock)) {
136
- fs.copySync(sourceLock, targetLockPath);
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
- }
133
+ if (!fs.existsSync(sourceLockPath)) {
134
+ console.error(" ❌ Lỗi: Không tìm thấy file lock mẫu trong Toolkit!");
135
+ return;
142
136
  }
143
137
 
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+)
138
+ // 1. Đọc dữ liệu từ file lock mẫu (v2) của Toolkit
139
+ const lockData = fs.readJsonSync(sourceLockPath);
151
140
  const rootInfo = lockData.packages && lockData.packages[""];
152
141
 
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
- };
142
+ if (!rootInfo) {
143
+ console.error(" Lỗi: File lock mẫu không có cấu trúc packages['']!");
144
+ return;
165
145
  }
166
146
 
167
- // 3. Bơm thêm các thư viện bắt buộc của Toolkit
168
- targetPkg.devDependencies = {
147
+ // 2. Chuẩn bị package.json mới dựa trên "linh hồn" của file lock mẫu
148
+ let targetPkg = fs.existsSync(targetPkgPath) ? fs.readJsonSync(targetPkgPath) : {};
149
+
150
+ // Hợp nhất dependencies: Phải có tên ở đây thì npm install mới không xóa file lock
151
+ targetPkg.dependencies = {
152
+ ...rootInfo.dependencies,
153
+ ...targetPkg.dependencies
154
+ };
155
+ targetPkg.devDependencies = {
156
+ ...rootInfo.devDependencies,
169
157
  ...targetPkg.devDependencies,
170
158
  "adm-zip": "^0.5.10",
171
- "fs-extra": "^11.1.0",
159
+ "fs-extra": "^11.1.0"
172
160
  };
173
161
 
174
- // 4. Lưu lại file package.json hoàn chỉnh
162
+ // 3. THỰC HIỆN GHI ĐÈ QUYẾT ĐỊNH
163
+ console.log(" 📝 Đang ghi đè package.json và package-lock.json...");
175
164
  fs.writeJsonSync(targetPkgPath, targetPkg, { spaces: 2 });
176
- console.log(" File package.json đã được tái tạo thành công.");
165
+
166
+ // Xóa file v3 hiện tại của project test (nếu có) để tránh xung đột
167
+ if (fs.existsSync(targetLockPath)) {
168
+ fs.removeSync(targetLockPath);
169
+ }
170
+ // Copy file v2 từ Toolkit sang làm "gốc"
171
+ fs.copySync(sourceLockPath, targetLockPath);
177
172
 
178
- // 5. Kích hoạt cài đặt
173
+ // 4. CHẠY INSTALL VỚI FLAG CỨNG RẮN
179
174
  try {
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.
183
- execSync("npm install", { cwd: projectRoot, stdio: "inherit" });
184
- console.log(" Hoàn tất! node_modules đã hồi sinh.");
175
+ console.log(" Đang chạy npm install. NPM sẽ tự nâng cấp v2 lên v3 nếu cần...");
176
+
177
+ // --legacy-peer-deps giúp tránh các lỗi xung đột phiên bản quá khắt khe của npm 7+
178
+ execSync("npm install --legacy-peer-deps", {
179
+ cwd: projectRoot,
180
+ stdio: "inherit"
181
+ });
182
+
183
+ console.log(" 🚀 THÀNH CÔNG! node_modules đã được hồi sinh hoàn toàn.");
185
184
  } catch (e) {
186
- console.error(" Lỗi khi cài đặt: " + e.message);
185
+ console.error(" Lỗi khi cài đặt: " + e.message);
186
+ console.log(" 💡 Thử lệnh thủ công: cd project-test && npm install");
187
187
  }
188
188
  }