cloudcc-cli 1.5.6 → 1.5.8
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 +18 -0
- package/bin/cc.js +50 -0
- package/bin/plugin.js +7 -0
- package/bin/project.js +7 -0
- package/cloudcc-cli/accessToken +1 -0
- package/package.json +5 -12
- package/src/classes/create.js +43 -0
- package/src/classes/index.js +8 -0
- package/src/classes/publish.js +47 -0
- package/src/plugin/create.js +80 -0
- package/src/plugin/create1.js +67 -0
- package/src/plugin/index.js +8 -0
- package/src/{builderPlugin.js → plugin/publish.js} +2 -3
- package/src/plugin/publish1.js +293 -0
- package/src/{creatorTemProject.js → project/create.js} +14 -18
- package/src/project/create1.js +95 -0
- package/src/project/index.js +7 -0
- package/src/timer/create.js +29 -0
- package/src/timer/index.js +8 -0
- package/src/timer/publish.js +47 -0
- package/src/triggers/create.js +35 -0
- package/src/triggers/index.js +8 -0
- package/src/triggers/publish.js +51 -0
- package/template/demojava +15 -0
- package/template/index.js +19 -7
- package/template/javaconfigjson +3 -0
- package/utils/checkVersion.js +1 -1
- package/utils/http.js +24 -1
- package/utils/utils.js +44 -0
- package/bin/build.js +0 -7
- package/bin/buildccbasesdk.js +0 -7
- package/bin/buildccsdk.js +0 -7
- package/bin/buildtag.js +0 -7
- package/bin/create.js +0 -7
- package/bin/createPlugin.js +0 -7
- package/bin/publish.js +0 -7
- package/bin/publishBuild.js +0 -7
- package/bin/publishh5.js +0 -7
- package/bin/publishh5Build.js +0 -7
- package/src/buildTag.js +0 -75
- package/src/builderBaseSDK.js +0 -90
- package/src/builderCreate.js +0 -84
- package/src/builderSDK.js +0 -162
- package/src/publishProject.js +0 -221
- package/src/publishProjectBuild.js +0 -223
- package/src/publishProjectH5.js +0 -218
- package/src/publishProjectH5Build.js +0 -224
- package/utils/askTool.js +0 -96
- package/utils/changeVersion copy.js +0 -75
- package/utils/changeVersion.js +0 -24
- package/utils/deploy.js +0 -9
- package/utils/encryption.js +0 -20
- package/utils/github-markdown.min.css +0 -2
- package/utils/md2html.js +0 -89
- package/utils/notifyIM.js +0 -87
- package/utils/pushCode.js +0 -202
- package/utils/trigger.js +0 -23
- package/utils/updatei18n.js +0 -127
- package/utils/writeVersion.js +0 -56
package/template/index.js
CHANGED
|
@@ -8,18 +8,22 @@ module.exports = function (creator, options, callback) {
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
const projectPath = path.join(cwd, name);
|
|
11
|
-
const pluginPath = path.join(projectPath, "plugin");
|
|
12
|
-
const src = path.join(projectPath, "src");
|
|
13
|
-
const utils = path.join(projectPath, "utils");
|
|
14
|
-
const public = path.join(projectPath, "public");
|
|
15
|
-
|
|
16
|
-
//新建项目目录
|
|
17
|
-
//同步创建目录,以免文件目录不对齐
|
|
18
11
|
fs.mkdirSync(projectPath)
|
|
12
|
+
|
|
13
|
+
const pluginPath = path.join(projectPath, "plugin");
|
|
19
14
|
fs.mkdirSync(pluginPath)
|
|
15
|
+
|
|
16
|
+
fs.mkdirSync(path.join(projectPath, "classes"))
|
|
17
|
+
const classesPath = path.join(projectPath, "classes/classdemo");
|
|
18
|
+
fs.mkdirSync(classesPath)
|
|
19
|
+
|
|
20
|
+
const src = path.join(projectPath, "src");
|
|
20
21
|
fs.mkdirSync(src)
|
|
22
|
+
|
|
23
|
+
const public = path.join(projectPath, "public");
|
|
21
24
|
fs.mkdirSync(public)
|
|
22
25
|
|
|
26
|
+
|
|
23
27
|
creator.copyTpl('packagejson', path.join(projectPath, "package.json"), {
|
|
24
28
|
name, description
|
|
25
29
|
})
|
|
@@ -40,6 +44,10 @@ module.exports = function (creator, options, callback) {
|
|
|
40
44
|
|
|
41
45
|
creator.copyTpl('indexhtml', path.join(public, "index.html"))
|
|
42
46
|
|
|
47
|
+
creator.copyTpl('demojava', path.join(classesPath, "demo.java"))
|
|
48
|
+
|
|
49
|
+
creator.copyTpl('javaconfigjson', path.join(classesPath, "config.json"))
|
|
50
|
+
|
|
43
51
|
|
|
44
52
|
creator.fs.commit(() => {
|
|
45
53
|
console.log();
|
|
@@ -47,6 +55,10 @@ module.exports = function (creator, options, callback) {
|
|
|
47
55
|
console.log(`${chalk.grey(`创建目录: ${name}/plugin`)} ${chalk.green('✔ ')}`);
|
|
48
56
|
console.log(`${chalk.grey(`创建文件: ${name}/plugin/index.vue`)} ${chalk.green('✔ ')}`);
|
|
49
57
|
|
|
58
|
+
console.log(`${chalk.grey(`创建目录: ${name}/classes/classdemo`)} ${chalk.green('✔ ')}`);
|
|
59
|
+
console.log(`${chalk.grey(`创建文件: ${name}/classdemo/demo.java`)} ${chalk.green('✔ ')}`);
|
|
60
|
+
console.log(`${chalk.grey(`创建文件: ${name}/classdemo/config.json`)} ${chalk.green('✔ ')}`);
|
|
61
|
+
|
|
50
62
|
console.log(`${chalk.grey(`创建目录: ${name}/public`)} ${chalk.green('✔ ')}`);
|
|
51
63
|
console.log(`${chalk.grey(`创建文件: ${name}/plugin/index.html`)} ${chalk.green('✔ ')}`);
|
|
52
64
|
|
package/utils/checkVersion.js
CHANGED
package/utils/http.js
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
|
+
const https = require("https")
|
|
2
|
+
const http = require("http")
|
|
1
3
|
const axios = require("axios")
|
|
4
|
+
|
|
5
|
+
const httpsAgent = new https.Agent({
|
|
6
|
+
rejectUnauthorized: false,
|
|
7
|
+
})
|
|
8
|
+
const httpAgent = new http.Agent({
|
|
9
|
+
rejectUnauthorized: false,
|
|
10
|
+
})
|
|
11
|
+
axios.defaults.httpsAgent = httpsAgent
|
|
12
|
+
axios.defaults.httpAgent = httpAgent
|
|
13
|
+
|
|
2
14
|
const service = axios.create({
|
|
3
15
|
timeout: 60000, // request timeout
|
|
4
16
|
headers: {
|
|
@@ -9,6 +21,9 @@ const service = axios.create({
|
|
|
9
21
|
// request interceptor
|
|
10
22
|
service.interceptors.request.use(
|
|
11
23
|
config => {
|
|
24
|
+
if (global.accessToken) {
|
|
25
|
+
config.headers.accessToken = global.accessToken
|
|
26
|
+
}
|
|
12
27
|
return config
|
|
13
28
|
},
|
|
14
29
|
error => {
|
|
@@ -53,6 +68,13 @@ module.exports = {
|
|
|
53
68
|
responseType: responseType
|
|
54
69
|
})
|
|
55
70
|
},
|
|
71
|
+
getParams: (url, data = {}) => {
|
|
72
|
+
return service({
|
|
73
|
+
url: url,
|
|
74
|
+
method: 'get',
|
|
75
|
+
params: data,
|
|
76
|
+
})
|
|
77
|
+
},
|
|
56
78
|
post: (url, data = {}, header = { appVersion: "1.0.0" }, responseType = '') => {
|
|
57
79
|
return service({
|
|
58
80
|
url: url,
|
|
@@ -65,7 +87,7 @@ module.exports = {
|
|
|
65
87
|
return service({
|
|
66
88
|
url: url,
|
|
67
89
|
method: 'post',
|
|
68
|
-
params: data
|
|
90
|
+
params: data,
|
|
69
91
|
})
|
|
70
92
|
},
|
|
71
93
|
postNormal: (url, data = {}) => {
|
|
@@ -96,4 +118,5 @@ module.exports = {
|
|
|
96
118
|
data: formateData(data)
|
|
97
119
|
})
|
|
98
120
|
}
|
|
121
|
+
|
|
99
122
|
}
|
package/utils/utils.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
const { getParams, postNormal } = require("./http")
|
|
2
|
+
const fs = require("fs");
|
|
3
|
+
const path = require("path")
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 获得配置信息
|
|
7
|
+
* @returns 配置信息
|
|
8
|
+
*/
|
|
9
|
+
function getPackageJson() {
|
|
10
|
+
const packageJson = JSON.parse(fs.readFileSync(path.join(process.cwd(), "package.json"), 'utf8'));
|
|
11
|
+
return packageJson.devConsoleConfig;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 获取业务访问baseurl
|
|
15
|
+
*/
|
|
16
|
+
async function getBaseUrl(orgId) {
|
|
17
|
+
let u = "https://developer.apis.cloudcc.cn/oauth/apidomain?scope=cloudccCRM&orgId=" + orgId
|
|
18
|
+
let res = await getParams(u)
|
|
19
|
+
global.baseUrl = res.orgapi_address
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 获取业务token
|
|
23
|
+
*/
|
|
24
|
+
async function getBusToken() {
|
|
25
|
+
let devConfig = getPackageJson();
|
|
26
|
+
let body = {
|
|
27
|
+
username: devConfig.username,
|
|
28
|
+
safetyMark: devConfig.safetyMark,
|
|
29
|
+
clientId: devConfig.clientId,
|
|
30
|
+
secretKey: devConfig.openSecretKey,
|
|
31
|
+
orgId: devConfig.orgId
|
|
32
|
+
}
|
|
33
|
+
await getBaseUrl(devConfig.orgId)
|
|
34
|
+
|
|
35
|
+
let res = await postNormal(global.baseUrl + "/api/cauth/token", body)
|
|
36
|
+
if (res.result) {
|
|
37
|
+
global.accessToken = res.data.accessToken
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
return false
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
module.exports = { getBusToken }
|
package/bin/build.js
DELETED
package/bin/buildccbasesdk.js
DELETED
package/bin/buildccsdk.js
DELETED
package/bin/buildtag.js
DELETED
package/bin/create.js
DELETED
package/bin/createPlugin.js
DELETED
package/bin/publish.js
DELETED
package/bin/publishBuild.js
DELETED
package/bin/publishh5.js
DELETED
package/bin/publishh5Build.js
DELETED
package/src/buildTag.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
// 同步执行exe命令
|
|
2
|
-
const exec = require('child_process').execSync;
|
|
3
|
-
// 文件管理器
|
|
4
|
-
const fs = require('fs');
|
|
5
|
-
// 控制台输出样式控件
|
|
6
|
-
const chalk = require("chalk")
|
|
7
|
-
// 检查版本更新
|
|
8
|
-
const { checkUpdate } = require("../utils/checkVersion")
|
|
9
|
-
// 配置信息
|
|
10
|
-
const projectConfig = JSON.parse(fs.readFileSync('package.json', 'utf8'))
|
|
11
|
-
// 控制台交互
|
|
12
|
-
const { askTag } = require("../utils/askTool")
|
|
13
|
-
// 通知IM
|
|
14
|
-
const { notifyDingDing } = require("../utils/NotifyIM")
|
|
15
|
-
/**
|
|
16
|
-
* 打包基础SDK,并发布到NPM
|
|
17
|
-
*/
|
|
18
|
-
class Builder {
|
|
19
|
-
constructor() {
|
|
20
|
-
this.user = exec("git config user.name").toString("utf8").trim();
|
|
21
|
-
}
|
|
22
|
-
async init() {
|
|
23
|
-
let res = await checkUpdate();
|
|
24
|
-
if (!res) {
|
|
25
|
-
let toTag = await askTag('请选择要创建的Tag:');
|
|
26
|
-
let fromTag = await askTag('基于哪个Tag创建:');
|
|
27
|
-
if (toTag.type == fromTag.type) {
|
|
28
|
-
console.log()
|
|
29
|
-
console.log(chalk.red("无法创建Tag:\n\n" + "from:" + fromTag.type + "\n" + "to:" + toTag.type))
|
|
30
|
-
console.log()
|
|
31
|
-
} else {
|
|
32
|
-
if (this.setTag(toTag.type, fromTag.type)) {
|
|
33
|
-
let version = exec(`git log ${fromTag.type} -1 --oneline`).toString("utf-8").split(" ")[1];
|
|
34
|
-
notifyDingDing(toTag.type, version, projectConfig, this.user)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* 设置Tags
|
|
42
|
-
*/
|
|
43
|
-
setTag(toTag, fromTag) {
|
|
44
|
-
console.log(chalk.green('开始创建Tag,请稍后...'));
|
|
45
|
-
try {
|
|
46
|
-
// 更新tag
|
|
47
|
-
exec("git fetch --tags -f")
|
|
48
|
-
} catch (error) {
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
try {
|
|
53
|
-
// 删除本地Tag
|
|
54
|
-
exec("git tag -d " + toTag)
|
|
55
|
-
} catch (error) {
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
try {
|
|
59
|
-
// 删除远程Tag
|
|
60
|
-
exec("git push origin :refs/tags/" + toTag)
|
|
61
|
-
} catch (error) {
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// 添加tag
|
|
65
|
-
exec("git tag " + toTag + " " + fromTag + " -f")
|
|
66
|
-
|
|
67
|
-
// 推送tag
|
|
68
|
-
exec("git push --tags")
|
|
69
|
-
|
|
70
|
-
console.log(chalk.green('Tag设置成功!'));
|
|
71
|
-
console.log();
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
module.exports = Builder;
|
package/src/builderBaseSDK.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
// 同步执行exe命令
|
|
2
|
-
const exec = require('child_process').execSync;
|
|
3
|
-
// 文件管理器
|
|
4
|
-
const fs = require('fs');
|
|
5
|
-
// 控制台输出样式控件
|
|
6
|
-
const chalk = require("chalk")
|
|
7
|
-
// 检查版本更新
|
|
8
|
-
const { checkUpdate } = require("../utils/checkVersion")
|
|
9
|
-
// 配置信息
|
|
10
|
-
const projectConfig = JSON.parse(fs.readFileSync('package.json', 'utf8'))
|
|
11
|
-
// 控制台交互
|
|
12
|
-
const { askType, askTypeOther } = require("../utils/askTool")
|
|
13
|
-
// 提交代码,设置Tag
|
|
14
|
-
const { getNewVersionName, pushCodeAndTags } = require("../utils/pushCode")
|
|
15
|
-
// 通知飞书
|
|
16
|
-
const { notifyDingDing } = require("../utils/NotifyIM")
|
|
17
|
-
// 网络请求
|
|
18
|
-
const { postParams } = require("../utils/http")
|
|
19
|
-
/**
|
|
20
|
-
* 打包基础SDK,并发布到NPM
|
|
21
|
-
*/
|
|
22
|
-
class Builder {
|
|
23
|
-
constructor() {
|
|
24
|
-
}
|
|
25
|
-
async init() {
|
|
26
|
-
let res = await checkUpdate();
|
|
27
|
-
if (!res) {
|
|
28
|
-
let condition = await askType();
|
|
29
|
-
if ("other" == condition.type) {
|
|
30
|
-
condition = await askTypeOther();
|
|
31
|
-
}
|
|
32
|
-
let version = getNewVersionName([condition.type])
|
|
33
|
-
if (condition && condition.type) {
|
|
34
|
-
if (this.buildpush2npm(version[0].split("V")[1])) {
|
|
35
|
-
pushCodeAndTags([condition.type])
|
|
36
|
-
// notifyFeishu(condition.type, version, projectConfig);
|
|
37
|
-
notifyDingDing(condition.type, version, projectConfig);
|
|
38
|
-
console.log(chalk.green('发布完成'));
|
|
39
|
-
}
|
|
40
|
-
} else {
|
|
41
|
-
console.log();
|
|
42
|
-
console.log(chalk.red("请至少设置一个有效的Tag"));
|
|
43
|
-
console.log();
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* 打包并发布到npm
|
|
49
|
-
* @returns null
|
|
50
|
-
*/
|
|
51
|
-
buildpush2npm(version) {
|
|
52
|
-
try {
|
|
53
|
-
// 设置package.json版本号
|
|
54
|
-
projectConfig.version = version;
|
|
55
|
-
fs.writeFileSync('package.json', JSON.stringify(projectConfig), 'utf8')
|
|
56
|
-
} catch (e) {
|
|
57
|
-
console.log(e);
|
|
58
|
-
}
|
|
59
|
-
try {
|
|
60
|
-
console.log()
|
|
61
|
-
console.log(chalk.green("开始编译,请稍后..."));
|
|
62
|
-
exec('npm run build');
|
|
63
|
-
console.log()
|
|
64
|
-
console.log(chalk.green("编译完成"));
|
|
65
|
-
} catch (error) {
|
|
66
|
-
console.log();
|
|
67
|
-
console.log(chalk.red('编译失败:' + error));
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
try {
|
|
71
|
-
console.log()
|
|
72
|
-
console.log(chalk.green("NPM开始发布,请稍后..."));
|
|
73
|
-
exec(`npm publish --registry https://registry.npmjs.org`)
|
|
74
|
-
try {
|
|
75
|
-
postParams(`https://npm.taobao.org/sync/${projectConfig.name}`)
|
|
76
|
-
} catch (error) {
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
console.log()
|
|
80
|
-
console.log(chalk.green("NPM发布完成"));
|
|
81
|
-
return true
|
|
82
|
-
} catch (error) {
|
|
83
|
-
console.log();
|
|
84
|
-
console.log(chalk.red('NPM发布失败:' + error));
|
|
85
|
-
return false
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
module.exports = Builder;
|
package/src/builderCreate.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const path = require("path")
|
|
3
|
-
const chalk = require("chalk")
|
|
4
|
-
const inquirer = require("inquirer")
|
|
5
|
-
// 检查cli版本更新功能
|
|
6
|
-
const { checkUpdate } = require("../utils/checkVersion")
|
|
7
|
-
const BaseUrl = "https://developer.apis.cloudcc.cn"
|
|
8
|
-
const axios = require("axios")
|
|
9
|
-
const temp = `<template>
|
|
10
|
-
<div class="cc-container">
|
|
11
|
-
<div>Hello CloudCC</div>
|
|
12
|
-
<div>
|
|
13
|
-
<a href="https://cloudccone.feishu.cn/wiki/JZ7CwcRfriU8taknCKCcwKEmncd">
|
|
14
|
-
开发者文档</a
|
|
15
|
-
>
|
|
16
|
-
</div>
|
|
17
|
-
</div>
|
|
18
|
-
</template>
|
|
19
|
-
|
|
20
|
-
<script>
|
|
21
|
-
export default {
|
|
22
|
-
data() {
|
|
23
|
-
return {
|
|
24
|
-
componentInfo: {
|
|
25
|
-
// 组件唯一标识,全局唯一
|
|
26
|
-
component: "cloudcc-demo-01",
|
|
27
|
-
// 组件名称,在页面编辑器显示的名字
|
|
28
|
-
compName: "cloudcc-demo-01",
|
|
29
|
-
// 组件描述信息
|
|
30
|
-
compDesc: "组件描述信息",
|
|
31
|
-
},
|
|
32
|
-
isLock: false,
|
|
33
|
-
};
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
</script>
|
|
37
|
-
<style lang="scss" scoped>
|
|
38
|
-
.cc-container {
|
|
39
|
-
text-align: center;
|
|
40
|
-
padding: 8px;
|
|
41
|
-
background: goldenrod;
|
|
42
|
-
}
|
|
43
|
-
</style>`
|
|
44
|
-
/**
|
|
45
|
-
* 创建组件模板文件
|
|
46
|
-
*/
|
|
47
|
-
class Builder {
|
|
48
|
-
constructor() {
|
|
49
|
-
this.options = {
|
|
50
|
-
// 开发配置信息
|
|
51
|
-
devConsoleConfig: {
|
|
52
|
-
},
|
|
53
|
-
}
|
|
54
|
-
this.plugin = process.argv.splice(2)[0]
|
|
55
|
-
}
|
|
56
|
-
async init() {
|
|
57
|
-
let res = await checkUpdate();
|
|
58
|
-
if (!res) {
|
|
59
|
-
// 获得用户输入
|
|
60
|
-
let answers;
|
|
61
|
-
if (this.plugin) {
|
|
62
|
-
answers = { buildFileName: this.plugin + "/demo.vue" }
|
|
63
|
-
} else {
|
|
64
|
-
answers = await this.ask();
|
|
65
|
-
answers.buildFileName = "./plugin/" + answers.buildFileName
|
|
66
|
-
}
|
|
67
|
-
fs.writeFileSync(answers.buildFileName, temp);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* 命令行交互
|
|
72
|
-
* @returns 结果
|
|
73
|
-
*/
|
|
74
|
-
ask() {
|
|
75
|
-
const prompt = [];
|
|
76
|
-
prompt.push({
|
|
77
|
-
type: "input",
|
|
78
|
-
name: "buildFileName",
|
|
79
|
-
message: "请输入文件名,如index.vue",
|
|
80
|
-
})
|
|
81
|
-
return inquirer.prompt(prompt)
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
module.exports = Builder;
|
package/src/builderSDK.js
DELETED
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
const { execSync } = require('child_process');
|
|
2
|
-
const { post } = require('../utils/http');
|
|
3
|
-
const fs = require('fs');
|
|
4
|
-
const path = require("path")
|
|
5
|
-
const chalk = require("chalk")
|
|
6
|
-
const inquirer = require("inquirer")
|
|
7
|
-
const { checkUpdate } = require("../utils/checkVersion")
|
|
8
|
-
const BaseUrl = "https://developer.apis.cloudcc.cn"
|
|
9
|
-
/**
|
|
10
|
-
* 打包业务sdk为js并发布到cdn
|
|
11
|
-
*/
|
|
12
|
-
class Builder {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.options = {
|
|
15
|
-
// 开发配置信息
|
|
16
|
-
devConsoleConfig: {
|
|
17
|
-
},
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
async init() {
|
|
21
|
-
let res = await checkUpdate();
|
|
22
|
-
if (!res) {
|
|
23
|
-
this.options.devConsoleConfig = this.getPackageJson();
|
|
24
|
-
// 获得用户输入
|
|
25
|
-
let answers = await this.ask();
|
|
26
|
-
if (answers.types.length == 0) {
|
|
27
|
-
console.log();
|
|
28
|
-
console.error(chalk.red(`请选择一个有效的发布版本!`));
|
|
29
|
-
console.log();
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
// 获得vue内容
|
|
33
|
-
let obj = this.getSDKName(answers.buildDirName);
|
|
34
|
-
obj.type = answers.types;
|
|
35
|
-
this.build(obj) && this.upload(obj);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* 命令行交互
|
|
40
|
-
* @returns 结果
|
|
41
|
-
*/
|
|
42
|
-
ask() {
|
|
43
|
-
const prompt = [{
|
|
44
|
-
type: 'list',
|
|
45
|
-
message: '请选择发布版本:',
|
|
46
|
-
name: 'types',
|
|
47
|
-
choices: [
|
|
48
|
-
{ name: "客户环境-Release", value: "release" },
|
|
49
|
-
{ name: "公司环境-GA", value: "ga" },
|
|
50
|
-
{ name: "uat环境-Beta", value: "beta" },
|
|
51
|
-
{ name: "测试环境-Dev", value: "dev" },
|
|
52
|
-
],
|
|
53
|
-
}, {
|
|
54
|
-
type: "input",
|
|
55
|
-
name: "buildDirName",
|
|
56
|
-
message: "请输入需要编译的目录名称,如Detail:",
|
|
57
|
-
}];
|
|
58
|
-
return inquirer.prompt(prompt)
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* 获得用户信息
|
|
62
|
-
* @returns 配置信息
|
|
63
|
-
*/
|
|
64
|
-
getPackageJson() {
|
|
65
|
-
const packageJson = JSON.parse(fs.readFileSync("package.json", 'utf8'));
|
|
66
|
-
return packageJson.devConsoleConfig; // cloudcc-plugin 中的 devConsoleConfig
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* 请求用户token
|
|
70
|
-
* @param {用户信息} devConsoleConfig
|
|
71
|
-
* @returns token
|
|
72
|
-
*/
|
|
73
|
-
async getToken(devConsoleConfig) {
|
|
74
|
-
let res = await post(this.options.devConsoleConfig.baseUrl || BaseUrl + "/sysconfig/auth/pc/1.0/post/tokenInfo", devConsoleConfig);
|
|
75
|
-
if (res.returnCode == 200) {
|
|
76
|
-
return res.data.accessToken;
|
|
77
|
-
} else {
|
|
78
|
-
console.error(chalk.red(`登录失败`, JSON.stringify(res)));
|
|
79
|
-
return null;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* 获得sdk名字
|
|
84
|
-
*/
|
|
85
|
-
getSDKName(buildFileName) {
|
|
86
|
-
let vueContent = fs.readFileSync(path.join("packages", buildFileName, "src", "index.vue"), 'utf8');
|
|
87
|
-
|
|
88
|
-
let sdkName = "cc-" + vueContent.split("\"cc-")[1].split("\"")[0]
|
|
89
|
-
|
|
90
|
-
return { sdkName, path: path.join("packages", buildFileName) }
|
|
91
|
-
};
|
|
92
|
-
/**
|
|
93
|
-
* 编译文件,将vue编译为js文件
|
|
94
|
-
* @param {编译对象信息} obj
|
|
95
|
-
*/
|
|
96
|
-
build(obj) {
|
|
97
|
-
try {
|
|
98
|
-
console.log(chalk.green('编译中,请稍后...'));
|
|
99
|
-
console.log()
|
|
100
|
-
execSync(`npx vue-cli-service build --target lib --name ${obj.sdkName} --dest ${path.join(obj.path, "lib")} ${path.join(obj.path, "index.js")}`);
|
|
101
|
-
console.log(chalk.green('编译成功!'));
|
|
102
|
-
console.log()
|
|
103
|
-
return true
|
|
104
|
-
} catch (e) {
|
|
105
|
-
console.log(chalk.red("编译失败:", e.toString("utf8").trim()));
|
|
106
|
-
console.log()
|
|
107
|
-
return false;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* 将文件上传
|
|
112
|
-
*/
|
|
113
|
-
async upload(obj) {
|
|
114
|
-
console.log(chalk.green('发布中,请稍后...'));
|
|
115
|
-
console.log()
|
|
116
|
-
let jsContent = "";
|
|
117
|
-
try {
|
|
118
|
-
jsContent = fs.readFileSync(path.join(obj.path, "lib", obj.sdkName + ".umd.min.js"), 'utf8')
|
|
119
|
-
} catch (err) {
|
|
120
|
-
console.error(err)
|
|
121
|
-
}
|
|
122
|
-
let body = {
|
|
123
|
-
fileInfo: []
|
|
124
|
-
};
|
|
125
|
-
body.fileInfo.push(
|
|
126
|
-
{
|
|
127
|
-
"fileName": obj.type + "/" + obj.sdkName + ".umd.min.js",
|
|
128
|
-
"fileContent": jsContent,
|
|
129
|
-
"bucketName": "cloudcc-sdk",
|
|
130
|
-
}
|
|
131
|
-
)
|
|
132
|
-
let res = await post(this.options.devConsoleConfig.baseUrl || BaseUrl + "/devconsole/cdn/uploadFile",
|
|
133
|
-
body);
|
|
134
|
-
if (res.returnCode == 200) {
|
|
135
|
-
console.error(chalk.green(`发布成功!`));
|
|
136
|
-
console.log();
|
|
137
|
-
} else {
|
|
138
|
-
console.error(chalk.red(`发布失败: ${res.returnInfo}`));
|
|
139
|
-
console.log();
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
return res;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* 过滤出min.js文件
|
|
147
|
-
* @returns 过滤结果
|
|
148
|
-
*/
|
|
149
|
-
filterFile() {
|
|
150
|
-
const jsPath = "build";
|
|
151
|
-
let jsPaths = [];
|
|
152
|
-
if (jsPath) {
|
|
153
|
-
jsPaths = fs.readdirSync(jsPath).filter((f) => {
|
|
154
|
-
return f.endsWith('umd.min.js');
|
|
155
|
-
}).map((item) => {
|
|
156
|
-
return path.join(jsPath, item);
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
return jsPaths;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
module.exports = Builder;
|