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.
- package/package.json +1 -1
- package/setup.js +33 -35
package/package.json
CHANGED
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(`
|
|
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.
|
|
132
|
+
// 1. Kiểm tra và 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("
|
|
137
|
+
console.log(" Đã copy package-lock.json mẫu vào dự án.");
|
|
138
138
|
} else {
|
|
139
|
-
console.error("
|
|
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.
|
|
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
|
-
//
|
|
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.
|
|
155
|
-
|
|
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.
|
|
168
|
-
targetPkg
|
|
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
|
-
"
|
|
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.
|
|
173
|
+
// 4. Ghi đè lại package.json hoàn chỉnh
|
|
175
174
|
fs.writeJsonSync(targetPkgPath, targetPkg, { spaces: 2 });
|
|
176
|
-
console.log("
|
|
175
|
+
console.log(" Đã tái tạo package.json khớp 100% với file lock.");
|
|
177
176
|
|
|
178
|
-
// 5.
|
|
177
|
+
// 5. Chạy cài đặt
|
|
179
178
|
try {
|
|
180
|
-
console.log(" Đang nạp
|
|
181
|
-
// Sử dụng --
|
|
182
|
-
|
|
183
|
-
|
|
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
|
}
|