qdmp-cli 0.0.9 → 0.0.10

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/actions.js CHANGED
@@ -110,10 +110,10 @@ export async function uploadAction(option) {
110
110
  const code = +remoteApp.latest + 1;
111
111
  const uploadPath = getUploadPath(appId, code);
112
112
  const url = `https://crane.qiandaocdn.com/${uploadPath}`;
113
-
113
+ const loader = remoteApp.loader;
114
114
  // 预上传
115
115
  const targetName = `${appId}_${code}`;
116
- const localPath = await preUpload(targetName);
116
+ const localPath = await preUpload(loader, targetName);
117
117
  if (!localPath) {
118
118
  error("预上传失败");
119
119
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qdmp-cli",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "description": "qdmp-cli",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -8,8 +8,8 @@
8
8
  "test": "echo \"Error: no test specified\" && exit 1"
9
9
  },
10
10
  "bin": {
11
- "qdmp": "./index.js",
12
- "qdmp-cli": "./index.js"
11
+ "qdmp": "index.js",
12
+ "qdmp-cli": "index.js"
13
13
  },
14
14
  "keywords": [
15
15
  "千岛小程序",
@@ -27,5 +27,8 @@
27
27
  "ora": "^8.2.0",
28
28
  "shelljs": "^0.10.0",
29
29
  "table": "^6.9.0"
30
+ },
31
+ "engines": {
32
+ "node": ">=20"
30
33
  }
31
34
  }
package/utils/common.js CHANGED
@@ -75,18 +75,25 @@ export async function createWorkSpaceFolder(dirname = "") {
75
75
  * @param {*} dirname 文件夹名
76
76
  */
77
77
  // 压缩项目
78
- async function compressProject(output, dirname = "") {
78
+ async function compressProject(output, dirname = "", loader) {
79
79
  try {
80
- const zip = new AdmZip();
81
- const h5Path = path.join(dirname, "h5");
80
+ if (loader !== "EMP") {
81
+ const zip = new AdmZip();
82
+ const h5Path = path.join(dirname, "h5");
82
83
 
83
- if (!fs.existsSync(h5Path)) {
84
- throw new Error("h5 目录不存在");
85
- }
84
+ if (!fs.existsSync(h5Path)) {
85
+ throw new Error("h5 目录不存在");
86
+ }
86
87
 
87
- // 添加文件夹时指定目标路径为 h5
88
- zip.addLocalFolder(h5Path, "h5");
89
- zip.writeZip(path.join(dirname, `${output}.zip`));
88
+ // 添加文件夹时指定目标路径为 h5
89
+ zip.addLocalFolder(h5Path, "h5");
90
+ zip.writeZip(path.join(dirname, `${output}.zip`));
91
+ } else {
92
+ // 直接压缩dist
93
+ const zip = new AdmZip();
94
+ zip.addLocalFolder(path.join(dirname, "dist"), "dist");
95
+ zip.writeZip(path.join(dirname, `${output}.zip`));
96
+ }
90
97
  return true;
91
98
  } catch (error) {
92
99
  return false;
@@ -132,25 +139,80 @@ async function copyDistFolder(dirname) {
132
139
  return false;
133
140
  }
134
141
  }
135
-
136
- /**预上传
137
- *
142
+ /** 复制EMP文件夹
143
+ * @param {*} dirname 文件夹名
144
+ */
145
+ async function copyEmpDistFolder() {
146
+ //直接复制根目录下dist文件夹
147
+ try {
148
+ fs.cpSync("dist", `${WORKSPACE_DIR}/dist`, { recursive: true });
149
+ success("文件复制完成");
150
+ return true;
151
+ } catch (e) {
152
+ error(e);
153
+ return false;
154
+ }
155
+ }
156
+ /**
157
+ * 预上传准备工作
158
+ * 1. 创建工作空间
159
+ * 2. 复制构建产物
160
+ * 3. 重命名文件夹(非EMP构建模式)
161
+ * 4. 压缩项目
162
+ * @param {string} loader - 构建加载器类型
163
+ * @param {string} targetName - 目标文件名
164
+ * @returns {Promise<string|boolean>} 压缩文件路径或操作失败返回false
138
165
  */
139
- export async function preUpload(targetName) {
166
+ export async function preUpload(loader, targetName) {
140
167
  try {
141
- if (!(await createWorkSpaceFolder(WORKSPACE_DIR))) return false;
168
+ // 1. 创建工作空间文件夹
169
+ if (!(await createWorkSpaceFolder(WORKSPACE_DIR))) {
170
+ error("创建工作空间失败");
171
+ return false;
172
+ }
142
173
 
143
- if (!(await copyDistFolder("dist"))) return false;
174
+ // 2. 根据构建类型复制对应产物
175
+ const isCopySuccess =
176
+ loader === "EMP"
177
+ ? await copyEmpDistFolder()
178
+ : await copyAndRenameDistFolder();
144
179
 
145
- if (
146
- !(await renameDistFolder(`${WORKSPACE_DIR}/dist`, `${WORKSPACE_DIR}/h5`))
147
- )
180
+ if (!isCopySuccess) {
181
+ error("复制构建产物失败");
148
182
  return false;
183
+ }
149
184
 
150
- if (!(await compressProject(targetName, WORKSPACE_DIR))) return false;
151
- return `./${WORKSPACE_DIR}/${targetName}.zip`;
152
- } catch (e) {
153
- error(e);
185
+ // 3. 压缩项目
186
+ if (!(await compressProject(targetName, WORKSPACE_DIR, loader))) {
187
+ error("压缩项目失败");
188
+ return false;
189
+ }
190
+
191
+ // 4. 返回压缩文件路径
192
+ const zipFilePath = `./${WORKSPACE_DIR}/${targetName}.zip`;
193
+ success(`预上传准备完成,压缩包路径: ${zipFilePath}`);
194
+ return zipFilePath;
195
+ } catch (error) {
196
+ error(`预上传过程出错: ${error.message}`);
197
+ return false;
198
+ }
199
+ }
200
+
201
+ /**
202
+ * 复制并创建标准H5文件夹结构
203
+ * 对于非EMP构建模式,复制dist内容并重命名为h5
204
+ * @returns {Promise<boolean>} 操作是否成功
205
+ */
206
+ async function copyAndRenameDistFolder() {
207
+ try {
208
+ if (!(await copyDistFolder("dist"))) {
209
+ return false;
210
+ }
211
+
212
+ return renameDistFolder(`${WORKSPACE_DIR}/dist`, `${WORKSPACE_DIR}/h5`);
213
+ } catch (error) {
214
+ error("复制并重命名文件夹过程出错:", error);
215
+ return false;
154
216
  }
155
217
  }
156
218
  /** 清理工作文件夹