hiepdh-playable-toolkit 2.3.4 → 3.0.1
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 +43 -37
package/package.json
CHANGED
package/setup.js
CHANGED
|
@@ -123,64 +123,70 @@ function copyFolderRecursive(source, target) {
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
function reviveProject(projectRoot, toolkitRoot, version = "3x") {
|
|
126
|
-
console.log(` [Toolkit]
|
|
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
|
-
console.error("
|
|
143
|
+
console.error(" Lỗi: File lock mẫu không có cấu trúc packages['']!");
|
|
152
144
|
return;
|
|
153
145
|
}
|
|
154
146
|
|
|
155
|
-
//
|
|
156
|
-
let targetPkg = fs.existsSync(targetPkgPath)
|
|
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)
|
|
149
|
+
? fs.readJsonSync(targetPkgPath)
|
|
150
|
+
: {};
|
|
157
151
|
|
|
158
|
-
|
|
159
|
-
targetPkg.
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
targetPkg.dependencies = {
|
|
163
|
-
...rootInfo.dependencies,
|
|
164
|
-
...targetPkg.dependencies
|
|
152
|
+
// Hợp nhất dependencies: Phải có tên ở đây thì npm install mới không xóa file lock
|
|
153
|
+
targetPkg.dependencies = {
|
|
154
|
+
...rootInfo.dependencies,
|
|
155
|
+
...targetPkg.dependencies,
|
|
165
156
|
};
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
...rootInfo.devDependencies,
|
|
157
|
+
targetPkg.devDependencies = {
|
|
158
|
+
...rootInfo.devDependencies,
|
|
169
159
|
...targetPkg.devDependencies,
|
|
170
|
-
"
|
|
160
|
+
"adm-zip": "^0.5.10",
|
|
161
|
+
"fs-extra": "^11.1.0",
|
|
171
162
|
};
|
|
172
163
|
|
|
173
|
-
//
|
|
164
|
+
// 3. THỰC HIỆN GHI ĐÈ QUYẾT ĐỊNH
|
|
165
|
+
console.log("Đang ghi đè package.json và package-lock.json...");
|
|
174
166
|
fs.writeJsonSync(targetPkgPath, targetPkg, { spaces: 2 });
|
|
175
|
-
console.log(" Đã tái tạo package.json khớp 100% với file lock.");
|
|
176
167
|
|
|
177
|
-
//
|
|
168
|
+
// Xóa file v3 hiện tại của project test (nếu có) để tránh xung đột
|
|
169
|
+
if (fs.existsSync(targetLockPath)) {
|
|
170
|
+
fs.removeSync(targetLockPath);
|
|
171
|
+
}
|
|
172
|
+
// Copy file v2 từ Toolkit sang làm "gốc"
|
|
173
|
+
fs.copySync(sourceLockPath, targetLockPath);
|
|
174
|
+
|
|
175
|
+
// 4. CHẠY INSTALL VỚI FLAG CỨNG RẮN
|
|
178
176
|
try {
|
|
179
|
-
console.log(
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
177
|
+
console.log(
|
|
178
|
+
" Đang chạy npm install. NPM sẽ tự nâng cấp v2 lên v3 nếu cần..."
|
|
179
|
+
);
|
|
180
|
+
|
|
181
|
+
// --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+
|
|
182
|
+
execSync("npm install --legacy-peer-deps", {
|
|
183
|
+
cwd: projectRoot,
|
|
184
|
+
stdio: "inherit",
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
console.log(" THÀNH CÔNG! node_modules đã được hồi sinh hoàn toàn.");
|
|
183
188
|
} catch (e) {
|
|
184
189
|
console.error(" Lỗi khi cài đặt: " + e.message);
|
|
190
|
+
console.log(" Thử lệnh thủ công: cd project-test && npm install");
|
|
185
191
|
}
|
|
186
192
|
}
|