hiepdh-playable-toolkit 2.3.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.
- package/package.json +1 -1
- package/setup.js +35 -33
package/package.json
CHANGED
package/setup.js
CHANGED
|
@@ -123,64 +123,66 @@ function copyFolderRecursive(source, target) {
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
function reviveProject(projectRoot, toolkitRoot, version = "3x") {
|
|
126
|
-
console.log(
|
|
126
|
+
console.log(`🛠️ [Toolkit] Đang xử lý đồ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
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
if (fs.existsSync(sourceLock)) {
|
|
136
|
-
fs.copySync(sourceLock, targetLockPath);
|
|
137
|
-
console.log(" Đã copy package-lock.json mẫu vào dự án.");
|
|
138
|
-
} else {
|
|
139
|
-
console.error(" Lỗi: Không tìm thấy file lock mẫu trong Toolkit!");
|
|
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
|
-
//
|
|
145
|
-
const lockData = fs.readJsonSync(
|
|
146
|
-
|
|
147
|
-
// Lấy thông tin từ node "packages" gốc (Trường "" đại diện cho package.json)
|
|
138
|
+
// 1. Đọc dữ liệu từ file lock mẫu (v2) của Toolkit
|
|
139
|
+
const lockData = fs.readJsonSync(sourceLockPath);
|
|
148
140
|
const rootInfo = lockData.packages && lockData.packages[""];
|
|
149
|
-
|
|
141
|
+
|
|
150
142
|
if (!rootInfo) {
|
|
151
|
-
|
|
152
|
-
|
|
143
|
+
console.error(" ❌ Lỗi: File lock mẫu không có cấu trúc packages['']!");
|
|
144
|
+
return;
|
|
153
145
|
}
|
|
154
146
|
|
|
155
|
-
//
|
|
147
|
+
// 2. Chuẩn bị package.json mới dựa trên "linh hồn" của file lock mẫu
|
|
156
148
|
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
149
|
|
|
161
|
-
//
|
|
150
|
+
// Hợp nhất dependencies: Phải có tên ở đây thì npm install mới không xóa file lock
|
|
162
151
|
targetPkg.dependencies = {
|
|
163
152
|
...rootInfo.dependencies,
|
|
164
153
|
...targetPkg.dependencies
|
|
165
154
|
};
|
|
166
|
-
|
|
167
155
|
targetPkg.devDependencies = {
|
|
168
156
|
...rootInfo.devDependencies,
|
|
169
157
|
...targetPkg.devDependencies,
|
|
170
|
-
"
|
|
158
|
+
"adm-zip": "^0.5.10",
|
|
159
|
+
"fs-extra": "^11.1.0"
|
|
171
160
|
};
|
|
172
161
|
|
|
173
|
-
//
|
|
162
|
+
// 3. THỰC HIỆN GHI ĐÈ QUYẾT ĐỊNH
|
|
163
|
+
console.log(" 📝 Đang ghi đè package.json và package-lock.json...");
|
|
174
164
|
fs.writeJsonSync(targetPkgPath, targetPkg, { spaces: 2 });
|
|
175
|
-
|
|
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);
|
|
176
172
|
|
|
177
|
-
//
|
|
173
|
+
// 4. CHẠY INSTALL VỚI FLAG CỨNG RẮN
|
|
178
174
|
try {
|
|
179
|
-
console.log(" Đang
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
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.");
|
|
183
184
|
} catch (e) {
|
|
184
|
-
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");
|
|
185
187
|
}
|
|
186
188
|
}
|