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.
- package/package.json +1 -1
- package/setup.js +42 -42
package/package.json
CHANGED
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(
|
|
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(" Đã 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
|
-
//
|
|
145
|
-
|
|
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
|
-
|
|
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
|
-
};
|
|
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
|
-
//
|
|
168
|
-
targetPkg
|
|
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
|
-
//
|
|
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
|
-
|
|
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
|
-
//
|
|
173
|
+
// 4. CHẠY INSTALL VỚI FLAG CỨNG RẮN
|
|
179
174
|
try {
|
|
180
|
-
console.log(" Đang
|
|
181
|
-
|
|
182
|
-
//
|
|
183
|
-
execSync("npm install", {
|
|
184
|
-
|
|
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
|
}
|