@tarojs/plugin-mini-ci 3.5.9 → 3.6.0-beta.0
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/README.md +292 -53
- package/dist/AlipayCI.js +119 -63
- package/dist/AlipayCI.js.map +1 -1
- package/dist/BaseCi.js +28 -1
- package/dist/BaseCi.js.map +1 -1
- package/dist/DingtalkCI.js +174 -0
- package/dist/DingtalkCI.js.map +1 -0
- package/dist/SwanCI.js +77 -22
- package/dist/SwanCI.js.map +1 -1
- package/dist/TTCI.js +85 -59
- package/dist/TTCI.js.map +1 -1
- package/dist/WeappCI.js +93 -19
- package/dist/WeappCI.js.map +1 -1
- package/dist/hooks.js +8 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.js +105 -27
- package/dist/index.js.map +1 -1
- package/dist/utils/compareVersion.js +27 -0
- package/dist/utils/compareVersion.js.map +1 -0
- package/dist/utils/npm.js +20 -0
- package/dist/utils/npm.js.map +1 -0
- package/dist/utils/qrcode.js +53 -0
- package/dist/utils/qrcode.js.map +1 -0
- package/package.json +19 -5
- package/types/AlipayCI.d.ts +6 -8
- package/types/BaseCi.d.ts +67 -19
- package/types/DingtalkCI.d.ts +13 -0
- package/types/SwanCI.d.ts +3 -3
- package/types/TTCI.d.ts +5 -4
- package/types/WeappCI.d.ts +1 -1
- package/types/hooks.d.ts +4 -0
- package/types/index.d.ts +1 -1
- package/types/utils/compareVersion.d.ts +1 -0
- package/types/utils/npm.d.ts +2 -0
- package/types/utils/qrcode.d.ts +16 -0
- package/dist/QRCode.js +0 -11
- package/dist/QRCode.js.map +0 -1
- package/types/QRCode.d.ts +0 -5
package/dist/AlipayCI.js
CHANGED
|
@@ -3,91 +3,147 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
/* eslint-disable no-console */
|
|
4
4
|
const path = require("path");
|
|
5
5
|
const BaseCi_1 = require("./BaseCi");
|
|
6
|
-
const
|
|
7
|
-
|
|
6
|
+
const compareVersion_1 = require("./utils/compareVersion");
|
|
7
|
+
const npm_1 = require("./utils/npm");
|
|
8
|
+
const qrcode_1 = require("./utils/qrcode");
|
|
9
|
+
/** 文档地址: https://opendocs.alipay.com/mini/02q29z */
|
|
8
10
|
class AlipayCI extends BaseCi_1.default {
|
|
9
|
-
|
|
11
|
+
init() {
|
|
10
12
|
if (this.pluginOpts.alipay == null) {
|
|
11
13
|
throw new Error('请为"@tarojs/plugin-mini-ci"插件配置 "alipay" 选项');
|
|
12
14
|
}
|
|
15
|
+
const { fs, printLog, processTypeEnum, chalk } = this.ctx.helper;
|
|
13
16
|
try {
|
|
14
|
-
this.
|
|
17
|
+
this.minidev = (0, npm_1.getNpmPkgSync)('minidev', process.cwd());
|
|
15
18
|
}
|
|
16
19
|
catch (error) {
|
|
17
|
-
|
|
20
|
+
printLog("error" /* processTypeEnum.ERROR */, chalk.red('请安装依赖:minidev'));
|
|
21
|
+
process.exit(1);
|
|
18
22
|
}
|
|
19
23
|
const { appPath } = this.ctx.paths;
|
|
20
|
-
const {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
const { toolId, privateKey: _privateKey, privateKeyPath: _privateKeyPath } = this.pluginOpts.alipay;
|
|
25
|
+
let privateKey = _privateKey;
|
|
26
|
+
if (!privateKey) {
|
|
27
|
+
const privateKeyPath = path.isAbsolute(_privateKeyPath) ? _privateKeyPath : path.join(appPath, _privateKeyPath);
|
|
28
|
+
if (!fs.pathExistsSync(privateKeyPath)) {
|
|
29
|
+
printLog("error" /* processTypeEnum.ERROR */, chalk.red(`"alipay.privateKeyPath"选项配置的路径"${privateKeyPath}"不存在,本次上传终止`));
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
privateKey = fs.readFileSync(privateKeyPath, 'utf-8');
|
|
34
|
+
}
|
|
26
35
|
}
|
|
27
|
-
this.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
36
|
+
this.minidev.useDefaults({
|
|
37
|
+
config: {
|
|
38
|
+
defaults: {
|
|
39
|
+
'alipay.authentication.privateKey': privateKey,
|
|
40
|
+
'alipay.authentication.toolId': toolId,
|
|
41
|
+
}
|
|
42
|
+
}
|
|
31
43
|
});
|
|
32
44
|
}
|
|
33
|
-
open() {
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
const { printLog, processTypeEnum } = this.ctx.helper;
|
|
37
|
-
const { outputPath: projectPath } = this.ctx.paths;
|
|
45
|
+
async open() {
|
|
46
|
+
const { devToolsInstallPath } = this.pluginOpts.alipay;
|
|
47
|
+
const { chalk, printLog, processTypeEnum } = this.ctx.helper;
|
|
38
48
|
try {
|
|
39
|
-
|
|
49
|
+
printLog("start" /* processTypeEnum.START */, '小程序开发者工具...', this.projectPath);
|
|
50
|
+
await this.minidev.minidev
|
|
51
|
+
.startIde(Object.assign({
|
|
52
|
+
project: this.projectPath
|
|
53
|
+
}, devToolsInstallPath ? { appPath: devToolsInstallPath } : {}));
|
|
40
54
|
}
|
|
41
55
|
catch (error) {
|
|
42
|
-
|
|
56
|
+
printLog("error" /* processTypeEnum.ERROR */, chalk.red(error.message));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async preview() {
|
|
60
|
+
const { chalk, printLog, processTypeEnum } = this.ctx.helper;
|
|
61
|
+
const { appid: appId, clientType = 'alipay' } = this.pluginOpts.alipay;
|
|
62
|
+
try {
|
|
63
|
+
const previewResult = await this.minidev.minidev.preview({
|
|
64
|
+
project: this.projectPath,
|
|
65
|
+
appId,
|
|
66
|
+
clientType,
|
|
67
|
+
autoPush: false
|
|
68
|
+
});
|
|
69
|
+
const previewQrcodePath = path.join(this.projectPath, 'preview.png');
|
|
70
|
+
// schema url规则 alipays://platformapi/startapp?appId=xxxx&nbsource=debug&nbsv=返回的临时版本号&nbsn=DEBUG&nboffline=sync&nbtoken=ide_qr&nbprefer=YES
|
|
71
|
+
/** 注意: 这是二维码的线上图片地址, 不是二维码中的内容 */
|
|
72
|
+
const qrcodeUrl = previewResult.qrcodeUrl;
|
|
73
|
+
const qrcodeContent = await (0, qrcode_1.readQrcodeImageContent)(qrcodeUrl);
|
|
74
|
+
// console.log('qrcodeContent', qrcodeContent)
|
|
75
|
+
await (0, qrcode_1.generateQrcodeImageFile)(previewQrcodePath, qrcodeContent);
|
|
76
|
+
printLog("remind" /* processTypeEnum.REMIND */, `预览版二维码已生成,存储在:"${previewQrcodePath}",二维码内容是:"${qrcodeContent}"`);
|
|
77
|
+
this.triggerPreviewHooks({
|
|
78
|
+
success: true,
|
|
79
|
+
data: {
|
|
80
|
+
platform: 'alipay',
|
|
81
|
+
qrCodeContent: qrcodeContent,
|
|
82
|
+
qrCodeLocalPath: previewQrcodePath
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
printLog("error" /* processTypeEnum.ERROR */, chalk.red(`预览上传失败 ${new Date().toLocaleString()} \n${error.message}`));
|
|
88
|
+
this.triggerPreviewHooks({
|
|
89
|
+
success: false,
|
|
90
|
+
data: {
|
|
91
|
+
platform: 'alipay',
|
|
92
|
+
qrCodeContent: '',
|
|
93
|
+
qrCodeLocalPath: ''
|
|
94
|
+
},
|
|
95
|
+
error
|
|
96
|
+
});
|
|
43
97
|
}
|
|
44
|
-
this.minidev
|
|
45
|
-
.startIde(Object.assign({
|
|
46
|
-
project: project || projectPath,
|
|
47
|
-
projectType: 'alipay-mini'
|
|
48
|
-
}, this.devToolsInstallPath ? { appPath: this.devToolsInstallPath } : {}))
|
|
49
|
-
.then(() => {
|
|
50
|
-
printLog("start" /* processTypeEnum.START */, '打开 IDE 成功');
|
|
51
|
-
})
|
|
52
|
-
.catch(res => {
|
|
53
|
-
printLog("error" /* processTypeEnum.ERROR */, res.message);
|
|
54
|
-
});
|
|
55
98
|
}
|
|
56
99
|
async upload() {
|
|
57
|
-
var _a;
|
|
58
|
-
const project = (_a = this.pluginOpts.alipay) === null || _a === void 0 ? void 0 : _a.project;
|
|
59
100
|
const { chalk, printLog, processTypeEnum } = this.ctx.helper;
|
|
60
|
-
const clientType = this.pluginOpts.alipay
|
|
101
|
+
const { clientType = 'alipay', appid: appId } = this.pluginOpts.alipay;
|
|
61
102
|
printLog("start" /* processTypeEnum.START */, '上传代码到阿里小程序后台', clientType);
|
|
62
|
-
//
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
onProgressUpdate(info) {
|
|
71
|
-
const { status, data } = info;
|
|
72
|
-
console.log(status, data);
|
|
103
|
+
// SDK上传不支持设置描述信息; 版本号必须大于现有版本号
|
|
104
|
+
try {
|
|
105
|
+
const lasterVersion = await this.minidev.minidev.app.getUploadedVersion({
|
|
106
|
+
appId,
|
|
107
|
+
clientType
|
|
108
|
+
});
|
|
109
|
+
if ((0, compareVersion_1.compareVersion)(this.version, lasterVersion) <= 0) {
|
|
110
|
+
printLog("error" /* processTypeEnum.ERROR */, chalk.red(`上传版本号 "${this.version}" 必须大于最新上传版本 "${lasterVersion}"`));
|
|
73
111
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
112
|
+
const result = await this.minidev.minidev.upload({
|
|
113
|
+
project: this.projectPath,
|
|
114
|
+
appId,
|
|
115
|
+
version: this.version,
|
|
116
|
+
clientType,
|
|
117
|
+
experience: true
|
|
118
|
+
});
|
|
119
|
+
/** 注意: 这是二维码的线上图片地址, 不是二维码中的内容 */
|
|
120
|
+
const qrcodeUrl = result.experienceQrCodeUrl;
|
|
121
|
+
const qrcodeContent = await (0, qrcode_1.readQrcodeImageContent)(qrcodeUrl);
|
|
122
|
+
const uploadQrcodePath = path.join(this.projectPath, 'upload.png');
|
|
123
|
+
await (0, qrcode_1.printQrcode2Terminal)(qrcodeContent);
|
|
124
|
+
await (0, qrcode_1.generateQrcodeImageFile)(uploadQrcodePath, qrcodeContent);
|
|
125
|
+
printLog("remind" /* processTypeEnum.REMIND */, `体验版二维码已生成,存储在:"${uploadQrcodePath}",二维码内容是:"${qrcodeContent}"`);
|
|
126
|
+
this.triggerUploadHooks({
|
|
127
|
+
success: true,
|
|
128
|
+
data: {
|
|
129
|
+
platform: 'alipay',
|
|
130
|
+
qrCodeContent: qrcodeContent,
|
|
131
|
+
qrCodeLocalPath: uploadQrcodePath
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
printLog("error" /* processTypeEnum.ERROR */, chalk.red(`体验版上传失败 ${new Date().toLocaleString()} \n${error}`));
|
|
137
|
+
this.triggerUploadHooks({
|
|
138
|
+
success: false,
|
|
139
|
+
data: {
|
|
140
|
+
platform: 'alipay',
|
|
141
|
+
qrCodeContent: '',
|
|
142
|
+
qrCodeLocalPath: ''
|
|
143
|
+
},
|
|
144
|
+
error
|
|
145
|
+
});
|
|
80
146
|
}
|
|
81
|
-
}
|
|
82
|
-
async preview() {
|
|
83
|
-
const previewResult = await this.miniu.miniPreview({
|
|
84
|
-
project: this.ctx.paths.outputPath,
|
|
85
|
-
appId: this.pluginOpts.alipay.appId,
|
|
86
|
-
clientType: this.pluginOpts.alipay.clientType || 'alipay',
|
|
87
|
-
qrcodeFormat: 'base64'
|
|
88
|
-
});
|
|
89
|
-
console.log('预览二维码地址:', previewResult.packageQrcode);
|
|
90
|
-
(0, QRCode_1.default)(previewResult.packageQrcode);
|
|
91
147
|
}
|
|
92
148
|
}
|
|
93
149
|
exports.default = AlipayCI;
|
package/dist/AlipayCI.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlipayCI.js","sourceRoot":"","sources":["../src/AlipayCI.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,6BAA4B;AAE5B,qCAA6B;
|
|
1
|
+
{"version":3,"file":"AlipayCI.js","sourceRoot":"","sources":["../src/AlipayCI.ts"],"names":[],"mappings":"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"}
|
package/dist/BaseCi.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const path = require("path");
|
|
4
|
+
const hooks_1 = require("./hooks");
|
|
4
5
|
class BaseCI {
|
|
5
6
|
constructor(ctx, pluginOpts) {
|
|
6
7
|
var _a, _b;
|
|
@@ -13,7 +14,33 @@ class BaseCI {
|
|
|
13
14
|
}));
|
|
14
15
|
this.version = pluginOpts.version || ((_a = packageInfo.taroConfig) === null || _a === void 0 ? void 0 : _a.version) || '1.0.0';
|
|
15
16
|
this.desc = pluginOpts.desc || ((_b = packageInfo.taroConfig) === null || _b === void 0 ? void 0 : _b.desc) || `CI构建自动构建于${new Date().toLocaleTimeString()}`;
|
|
16
|
-
|
|
17
|
+
}
|
|
18
|
+
setProjectPath(path) {
|
|
19
|
+
this.projectPath = path;
|
|
20
|
+
}
|
|
21
|
+
/** 执行预览命令后触发 */
|
|
22
|
+
async triggerPreviewHooks(content) {
|
|
23
|
+
const { success, data, error } = content;
|
|
24
|
+
await this.ctx.applyPlugins({
|
|
25
|
+
name: hooks_1.ON_PREVIEW_COMPLETE,
|
|
26
|
+
opts: {
|
|
27
|
+
success,
|
|
28
|
+
data: Object.assign({ version: this.version, desc: this.desc, projectPath: this.projectPath }, data),
|
|
29
|
+
error
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/** 执行上传命令后触发 */
|
|
34
|
+
async triggerUploadHooks(content) {
|
|
35
|
+
const { success, data, error } = content;
|
|
36
|
+
await this.ctx.applyPlugins({
|
|
37
|
+
name: hooks_1.ON_UPLOAD_COMPLETE,
|
|
38
|
+
opts: {
|
|
39
|
+
success,
|
|
40
|
+
data: Object.assign({ version: this.version, desc: this.desc, projectPath: this.projectPath }, data),
|
|
41
|
+
error
|
|
42
|
+
},
|
|
43
|
+
});
|
|
17
44
|
}
|
|
18
45
|
}
|
|
19
46
|
exports.default = BaseCI;
|
package/dist/BaseCi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseCi.js","sourceRoot":"","sources":["../src/BaseCi.ts"],"names":[],"mappings":";;AACA,6BAA4B;
|
|
1
|
+
{"version":3,"file":"BaseCi.js","sourceRoot":"","sources":["../src/BaseCi.ts"],"names":[],"mappings":";;AACA,6BAA4B;AAE5B,mCAAiE;AA8GjE,MAA8B,MAAM;IAgBlC,YAAa,GAAmB,EAAE,UAAqB;;QACrD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAE5B,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,KAAK,CAAA;QAC7B,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE;YAClD,QAAQ,EAAE,MAAM;SACjB,CAAC,CACH,CAAA;QACD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,KAAI,MAAA,WAAW,CAAC,UAAU,0CAAE,OAAO,CAAA,IAAI,OAAO,CAAA;QAC/E,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,KAAI,MAAA,WAAW,CAAC,UAAU,0CAAE,IAAI,CAAA,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAAA;IAE9G,CAAC;IAED,cAAc,CAAE,IAAY;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,mBAAmB,CAAE,OAI1B;QACC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;QACxC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YAC1B,IAAI,EAAE,2BAAmB;YACzB,IAAI,EAAE;gBACJ,OAAO;gBACP,IAAI,kBACF,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAC1B,IAAI,CACR;gBACD,KAAK;aACN;SACF,CAAC,CAAA;IACJ,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,kBAAkB,CAAE,OAIzB;QACC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;QACxC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YAC1B,IAAI,EAAE,0BAAkB;YACxB,IAAI,EAAE;gBACJ,OAAO;gBACP,IAAI,kBACF,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAC1B,IAAI,CACR;gBACD,KAAK;aACN;SACF,CAAC,CAAA;IACJ,CAAC;CAaF;AA3FD,yBA2FC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable no-console */
|
|
4
|
+
const fs = require("fs");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const BaseCi_1 = require("./BaseCi");
|
|
7
|
+
const npm_1 = require("./utils/npm");
|
|
8
|
+
const qrcode_1 = require("./utils/qrcode");
|
|
9
|
+
/**
|
|
10
|
+
* 钉钉小程序CI https://github.com/open-dingtalk/dingtalk-design-cli/blob/develop/packages/opensdk/package.json
|
|
11
|
+
*/
|
|
12
|
+
class DingtalkCI extends BaseCi_1.default {
|
|
13
|
+
init() {
|
|
14
|
+
if (this.pluginOpts.dd == null) {
|
|
15
|
+
throw new Error('请为"@tarojs/plugin-mini-ci"插件配置 "dd" 选项');
|
|
16
|
+
}
|
|
17
|
+
const { printLog, processTypeEnum, chalk } = this.ctx.helper;
|
|
18
|
+
const { token } = this.pluginOpts.dd;
|
|
19
|
+
try {
|
|
20
|
+
this.dingtalkSDK = (0, npm_1.getNpmPkgSync)('dingtalk-miniapp-opensdk', process.cwd()).sdk;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
printLog("error" /* processTypeEnum.ERROR */, chalk.red('请安装依赖:dingtalk-miniapp-opensdk , 该依赖用于CI预览、上传钉钉小程序'));
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
this.dingtalkSDK.setConfig({
|
|
27
|
+
appKey: '',
|
|
28
|
+
appSecret: '',
|
|
29
|
+
accessToken: token,
|
|
30
|
+
host: 'https://oapi.dingtalk.com',
|
|
31
|
+
});
|
|
32
|
+
const appInfo = JSON.parse(fs.readFileSync(path.join(this.projectPath, 'app.json'), {
|
|
33
|
+
encoding: 'utf8'
|
|
34
|
+
}));
|
|
35
|
+
this.entryPage = appInfo.pages[0];
|
|
36
|
+
}
|
|
37
|
+
// 和支付宝小程序共用ide
|
|
38
|
+
async open() {
|
|
39
|
+
const { devToolsInstallPath, projectType = 'dingtalk-biz' } = this.pluginOpts.dd;
|
|
40
|
+
const { chalk, printLog, processTypeEnum } = this.ctx.helper;
|
|
41
|
+
let minidev;
|
|
42
|
+
try {
|
|
43
|
+
minidev = (0, npm_1.getNpmPkgSync)('minidev', process.cwd());
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
printLog("error" /* processTypeEnum.ERROR */, chalk.red('请安装依赖:minidev ,该依赖用于编译后自动打开小程序开发者工具'));
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
printLog("start" /* processTypeEnum.START */, '小程序开发者工具...', this.projectPath);
|
|
51
|
+
await minidev.minidev.startIde(Object.assign({
|
|
52
|
+
project: this.projectPath,
|
|
53
|
+
projectType,
|
|
54
|
+
}, devToolsInstallPath ? { appPath: devToolsInstallPath } : {}));
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
printLog("error" /* processTypeEnum.ERROR */, chalk.red(error.message));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// 特性: CI 内部会自己打印二维码; 预览版不会上传到后台,只有预览码作为入口访问
|
|
61
|
+
async preview() {
|
|
62
|
+
const { chalk, printLog, processTypeEnum } = this.ctx.helper;
|
|
63
|
+
const { appid, } = this.pluginOpts.dd;
|
|
64
|
+
try {
|
|
65
|
+
const previewUrl = await this.dingtalkSDK.previewBuild({
|
|
66
|
+
project: this.projectPath,
|
|
67
|
+
miniAppId: appid,
|
|
68
|
+
page: this.entryPage,
|
|
69
|
+
query: '',
|
|
70
|
+
ignoreHttpReqPermission: true,
|
|
71
|
+
ignoreWebViewDomainCheck: true,
|
|
72
|
+
buildTarget: 'Preview',
|
|
73
|
+
onProgressUpdate(info) {
|
|
74
|
+
// logger.debug('拉取构建结果', info);
|
|
75
|
+
console.log('info.status', info.status);
|
|
76
|
+
if (info.status === 'failed') {
|
|
77
|
+
console.error('构建失败');
|
|
78
|
+
}
|
|
79
|
+
else if (info.status === 'overtime') {
|
|
80
|
+
console.error('构建超时');
|
|
81
|
+
}
|
|
82
|
+
else if (info.status === 'success') {
|
|
83
|
+
console.log('构建成功', info);
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
const previewQrcodePath = path.join(this.projectPath, 'preview.png');
|
|
88
|
+
await (0, qrcode_1.generateQrcodeImageFile)(previewQrcodePath, previewUrl);
|
|
89
|
+
printLog("remind" /* processTypeEnum.REMIND */, `预览版二维码已生成,存储在:"${previewQrcodePath}",二维码内容是:"${previewUrl}"`);
|
|
90
|
+
this.triggerPreviewHooks({
|
|
91
|
+
success: true,
|
|
92
|
+
data: {
|
|
93
|
+
platform: 'dd',
|
|
94
|
+
qrCodeContent: previewUrl,
|
|
95
|
+
qrCodeLocalPath: previewQrcodePath
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
printLog("error" /* processTypeEnum.ERROR */, chalk.red(`预览失败 ${new Date().toLocaleString()} \n${error.message}`));
|
|
101
|
+
this.triggerPreviewHooks({
|
|
102
|
+
success: false,
|
|
103
|
+
data: {
|
|
104
|
+
platform: 'dd',
|
|
105
|
+
qrCodeContent: '',
|
|
106
|
+
qrCodeLocalPath: ''
|
|
107
|
+
},
|
|
108
|
+
error
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// 特性: CI内部暂时未支持上传后返回体验码,等待官方支持: https://github.com/open-dingtalk/dingtalk-design-cli/issues/34
|
|
113
|
+
async upload() {
|
|
114
|
+
const { chalk, printLog, processTypeEnum } = this.ctx.helper;
|
|
115
|
+
const { appid } = this.pluginOpts.dd;
|
|
116
|
+
printLog("start" /* processTypeEnum.START */, '上传代码到钉钉小程序后台');
|
|
117
|
+
let hasDone = false;
|
|
118
|
+
const uploadCommonParams = {
|
|
119
|
+
project: this.projectPath,
|
|
120
|
+
miniAppId: appid,
|
|
121
|
+
packageVersion: this.version
|
|
122
|
+
};
|
|
123
|
+
try {
|
|
124
|
+
const result = await this.dingtalkSDK.miniUpload(Object.assign(Object.assign({}, uploadCommonParams), { onProgressUpdate: info => {
|
|
125
|
+
console.log(info);
|
|
126
|
+
const { data = {}, status } = info;
|
|
127
|
+
const logId = path.basename(data.logUrl || '');
|
|
128
|
+
// @ts-ignore
|
|
129
|
+
const log = data.log;
|
|
130
|
+
if (status === 'success') {
|
|
131
|
+
if (!hasDone) {
|
|
132
|
+
console.log('构建成功');
|
|
133
|
+
console.log('本次上传版本号', data.version);
|
|
134
|
+
hasDone = true;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else if (status === 'building') {
|
|
138
|
+
console.log(`构建中,正在查询构建结果。 ${logId ? `logId: ${logId}` : ''}`);
|
|
139
|
+
}
|
|
140
|
+
else if (status === 'overtime') {
|
|
141
|
+
console.log('构建超时,请重试', log);
|
|
142
|
+
}
|
|
143
|
+
else if (status === 'failed') {
|
|
144
|
+
console.log('构建失败', logId);
|
|
145
|
+
console.error(log);
|
|
146
|
+
}
|
|
147
|
+
} }));
|
|
148
|
+
// 体验码规则:dingtalk://dingtalkclient/action/open_micro_app?corpId=xxx&miniAppId=yyy&source=trial&version=构建id&agentId=xxx&pVersion=1&packageType=1
|
|
149
|
+
console.log(chalk.green(`版本 ${result.packageVersion} 上传成功 ${new Date().toLocaleString()}`));
|
|
150
|
+
this.triggerUploadHooks({
|
|
151
|
+
success: true,
|
|
152
|
+
data: {
|
|
153
|
+
platform: 'dd',
|
|
154
|
+
qrCodeContent: '',
|
|
155
|
+
qrCodeLocalPath: ''
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
printLog("error" /* processTypeEnum.ERROR */, chalk.red(`体验版上传失败 ${new Date().toLocaleString()} \n${error.message}`));
|
|
161
|
+
this.triggerUploadHooks({
|
|
162
|
+
success: false,
|
|
163
|
+
data: {
|
|
164
|
+
platform: 'dd',
|
|
165
|
+
qrCodeContent: '',
|
|
166
|
+
qrCodeLocalPath: ''
|
|
167
|
+
},
|
|
168
|
+
error
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
exports.default = DingtalkCI;
|
|
174
|
+
//# sourceMappingURL=DingtalkCI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DingtalkCI.js","sourceRoot":"","sources":["../src/DingtalkCI.ts"],"names":[],"mappings":"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"}
|
package/dist/SwanCI.js
CHANGED
|
@@ -4,46 +4,101 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
const path = require("path");
|
|
5
5
|
const shell = require("shelljs");
|
|
6
6
|
const BaseCi_1 = require("./BaseCi");
|
|
7
|
-
const
|
|
7
|
+
const npm_1 = require("./utils/npm");
|
|
8
|
+
const qrcode_1 = require("./utils/qrcode");
|
|
8
9
|
class SwanCI extends BaseCi_1.default {
|
|
9
|
-
|
|
10
|
+
init() {
|
|
10
11
|
if (this.pluginOpts.swan == null) {
|
|
11
12
|
throw new Error('请为"@tarojs/plugin-mini-ci"插件配置 "swan" 选项');
|
|
12
13
|
}
|
|
14
|
+
const { chalk, printLog, processTypeEnum } = this.ctx.helper;
|
|
13
15
|
try {
|
|
14
|
-
this.swanBin =
|
|
16
|
+
this.swanBin = (0, npm_1.resolveNpmSync)('swan-toolkit/bin/swan', process.cwd());
|
|
15
17
|
}
|
|
16
18
|
catch (error) {
|
|
17
|
-
|
|
19
|
+
printLog("error" /* processTypeEnum.ERROR */, chalk.red('请安装依赖:swan-toolkit'));
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async open() {
|
|
24
|
+
// 官方CI包不支持CLI打开IDE,吾通过查看百度开发者工具安装包下的cli文件、以及类比微信开发者工具的调用方式,再加上一点“推理”,发现了调用协议,从而实现了此功能
|
|
25
|
+
const { printLog, processTypeEnum, fs } = this.ctx.helper;
|
|
26
|
+
const isMac = process.platform === 'darwin';
|
|
27
|
+
const devToolsInstallPath = this.pluginOpts.swan.devToolsInstallPath || (isMac ? '/Applications/百度开发者工具.app' : 'C:\\Program Files\\swan-ide-gui');
|
|
28
|
+
const cliPath = path.join(devToolsInstallPath, isMac ? '/Contents/MacOS/cli' : '/cli.bat');
|
|
29
|
+
if (!(await fs.pathExists(cliPath))) {
|
|
30
|
+
printLog("error" /* processTypeEnum.ERROR */, '命令行工具路径不存在', cliPath);
|
|
18
31
|
}
|
|
32
|
+
printLog("start" /* processTypeEnum.START */, '百度开发者工具...', this.projectPath);
|
|
33
|
+
shell.exec(`${cliPath} --project-path ${this.projectPath}`);
|
|
19
34
|
}
|
|
20
|
-
|
|
35
|
+
async preview() {
|
|
21
36
|
const { printLog, processTypeEnum } = this.ctx.helper;
|
|
22
|
-
|
|
37
|
+
const previewQrcodePath = path.join(this.projectPath, 'preview.png');
|
|
38
|
+
printLog("start" /* processTypeEnum.START */, '预览百度小程序');
|
|
39
|
+
shell.exec(`${this.swanBin} preview --project-path ${this.projectPath} --token ${this.pluginOpts.swan.token} --min-swan-version ${this.pluginOpts.swan.minSwanVersion || '3.350.6'} --json`, async (_code, stdout, stderr) => {
|
|
40
|
+
if (!stderr) {
|
|
41
|
+
stdout = JSON.parse(stdout);
|
|
42
|
+
// @ts-ignore
|
|
43
|
+
const qrContent = stdout.list[0].url;
|
|
44
|
+
// console.log('预览图片:', stdout.list[0].urlBase64)
|
|
45
|
+
await (0, qrcode_1.printQrcode2Terminal)(qrContent);
|
|
46
|
+
await (0, qrcode_1.generateQrcodeImageFile)(previewQrcodePath, qrContent);
|
|
47
|
+
printLog("remind" /* processTypeEnum.REMIND */, `预览二维码已生成,存储在:"${previewQrcodePath}",二维码内容是:${qrContent}`);
|
|
48
|
+
this.triggerPreviewHooks({
|
|
49
|
+
success: true,
|
|
50
|
+
data: {
|
|
51
|
+
platform: 'swan',
|
|
52
|
+
qrCodeContent: qrContent,
|
|
53
|
+
qrCodeLocalPath: previewQrcodePath
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
this.triggerPreviewHooks({
|
|
59
|
+
success: false,
|
|
60
|
+
data: {
|
|
61
|
+
platform: 'swan',
|
|
62
|
+
qrCodeContent: '',
|
|
63
|
+
qrCodeLocalPath: ''
|
|
64
|
+
},
|
|
65
|
+
error: new Error(stderr.split('\n')[0])
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
});
|
|
23
69
|
}
|
|
24
70
|
async upload() {
|
|
25
|
-
const { outputPath } = this.ctx.paths;
|
|
26
71
|
const { chalk, printLog, processTypeEnum } = this.ctx.helper;
|
|
27
72
|
printLog("start" /* processTypeEnum.START */, '上传体验版代码到百度后台');
|
|
28
73
|
printLog("remind" /* processTypeEnum.REMIND */, `本次上传版本号为:"${this.version}",上传描述为:“${this.desc}”`);
|
|
29
|
-
shell.exec(`${this.swanBin} upload --project-path ${
|
|
74
|
+
shell.exec(`${this.swanBin} upload --project-path ${this.projectPath} --token ${this.pluginOpts.swan.token} --release-version ${this.version} --min-swan-version ${this.pluginOpts.swan.minSwanVersion || '3.350.6'} --desc ${this.desc} --json`, async (_code, stdout, stderr) => {
|
|
30
75
|
if (!stderr) {
|
|
31
|
-
// stdout = JSON.parse(stdout)
|
|
32
76
|
console.log(chalk.green(`上传成功 ${new Date().toLocaleString()}`));
|
|
77
|
+
const stdoutRes = JSON.parse(stdout);
|
|
78
|
+
const qrContent = stdoutRes.schemeUrl;
|
|
79
|
+
const uploadQrcodePath = path.join(this.projectPath, 'upload.png');
|
|
80
|
+
await (0, qrcode_1.printQrcode2Terminal)(qrContent);
|
|
81
|
+
await (0, qrcode_1.generateQrcodeImageFile)(uploadQrcodePath, qrContent);
|
|
82
|
+
printLog("remind" /* processTypeEnum.REMIND */, `体验版二维码已生成,存储在:"${uploadQrcodePath}",二维码内容是:${qrContent}`);
|
|
83
|
+
this.triggerUploadHooks({
|
|
84
|
+
success: true,
|
|
85
|
+
data: {
|
|
86
|
+
platform: 'swan',
|
|
87
|
+
qrCodeContent: qrContent,
|
|
88
|
+
qrCodeLocalPath: uploadQrcodePath
|
|
89
|
+
}
|
|
90
|
+
});
|
|
33
91
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
// console.log('预览图片:', stdout.list[0].urlBase64)
|
|
45
|
-
// 需要自己将预览二维码打印到控制台
|
|
46
|
-
(0, QRCode_1.default)(stdout.list[0].url);
|
|
92
|
+
else {
|
|
93
|
+
this.triggerUploadHooks({
|
|
94
|
+
success: false,
|
|
95
|
+
data: {
|
|
96
|
+
platform: 'swan',
|
|
97
|
+
qrCodeContent: '',
|
|
98
|
+
qrCodeLocalPath: ''
|
|
99
|
+
},
|
|
100
|
+
error: new Error(stderr.split('\n')[0])
|
|
101
|
+
});
|
|
47
102
|
}
|
|
48
103
|
});
|
|
49
104
|
}
|
package/dist/SwanCI.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwanCI.js","sourceRoot":"","sources":["../src/SwanCI.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,6BAA4B;AAC5B,iCAAgC;AAEhC,qCAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"SwanCI.js","sourceRoot":"","sources":["../src/SwanCI.ts"],"names":[],"mappings":"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"}
|