hiepdh-playable-toolkit 2.2.4 → 2.3.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 +33 -35
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hiepdh-playable-toolkit",
3
- "version": "2.2.4",
3
+ "version": "2.3.4",
4
4
  "main": "setup.js",
5
5
  "dependencies": {
6
6
  "fs-extra": "^11.1.0",
package/setup.js CHANGED
@@ -123,65 +123,63 @@ 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] Bắt đầu hồi sinh môi trường Cocos ${version}...`);
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
131
 
132
- // 1. Ưu tiên đưa file package-lock.json mẫu vào trước
132
+ // 1. Kiểm tra khôi phục file lock từ Toolkit nếu project chưa có
133
133
  if (!fs.existsSync(targetLockPath)) {
134
134
  const sourceLock = path.join(templateDir, "package-lock.json");
135
135
  if (fs.existsSync(sourceLock)) {
136
136
  fs.copySync(sourceLock, targetLockPath);
137
- console.log(" Đã khôi phục file lock từ Toolkit.");
137
+ console.log(" Đã copy package-lock.json mẫu vào dự án.");
138
138
  } else {
139
- console.error(" Lỗi: Toolkit không file package-lock mẫu!");
139
+ console.error(" Lỗi: Không tìm thấy file lock mẫu trong Toolkit!");
140
140
  return;
141
141
  }
142
142
  }
143
143
 
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
- : {};
144
+ // 2. Đọc dữ liệu từ file lock để trích xuất dependencies
148
145
  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+)
146
+
147
+ // Lấy thông tin từ node "packages" gốc (Trường "" đại diện cho package.json)
151
148
  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
- };
149
+
150
+ if (!rootInfo) {
151
+ console.error(" Lỗi: Cấu trúc file lock không hợp lệ (Thiếu packages['']).");
152
+ return;
165
153
  }
166
154
 
167
- // 3. Bơm thêm các thư viện bắt buộc của Toolkit
168
- targetPkg.devDependencies = {
155
+ // 3. Tái tạo nội dung package.json từ file lock
156
+ let targetPkg = fs.existsSync(targetPkgPath) ? fs.readJsonSync(targetPkgPath) : {};
157
+
158
+ targetPkg.name = targetPkg.name || rootInfo.name || "MergeDino";
159
+ targetPkg.version = targetPkg.version || rootInfo.version || "1.0.0";
160
+
161
+ // Trộn dependencies từ file lock vào package.json
162
+ targetPkg.dependencies = {
163
+ ...rootInfo.dependencies,
164
+ ...targetPkg.dependencies
165
+ };
166
+
167
+ targetPkg.devDependencies = {
168
+ ...rootInfo.devDependencies,
169
169
  ...targetPkg.devDependencies,
170
- "adm-zip": "^0.5.10",
171
- "fs-extra": "^11.1.0",
170
+ "fs-extra": "^11.1.0" // Đảm bảo luôn có để toolkit chạy
172
171
  };
173
172
 
174
- // 4. Lưu lại file package.json hoàn chỉnh
173
+ // 4. Ghi đè lại package.json hoàn chỉnh
175
174
  fs.writeJsonSync(targetPkgPath, targetPkg, { spaces: 2 });
176
- console.log(" File package.json đã được tái tạo thành công.");
175
+ console.log(" Đã tái tạo package.json khớp 100% với file lock.");
177
176
 
178
- // 5. Kích hoạt cài đặt
177
+ // 5. Chạy cài đặt
179
178
  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.");
179
+ console.log(" Đang nạp node_modules từ Internet (npm install)...");
180
+ // Sử dụng --prefer-offline để tận dụng cache nếu đã từng cài
181
+ execSync("npm install --prefer-offline", { cwd: projectRoot, stdio: "inherit" });
182
+ console.log(" Hồi sinh thành công! Folder node_modules đã sẵn sàng.");
185
183
  } catch (e) {
186
184
  console.error(" Lỗi khi cài đặt: " + e.message);
187
185
  }