cloudcc-cli 0.5.2 → 0.5.6
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/package.json +3 -1
- package/src/publish.js +17 -11
- package/src/triggerConfig.json +1 -6
- package/test/index.html +18 -0
- package/test/test.js +14 -3
- package/utils/changeVersion.js +0 -8
- package/utils/github-markdown.min.css +2 -0
- package/utils/md2html.js +97 -0
package/README.md
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
# ReleaseV0.5.5
|
|
2
|
+
#### 发布日期:2021-10-21
|
|
3
|
+
#### 发布范围:全量
|
|
4
|
+
#### 发布内容
|
|
5
|
+
* 迭代:增加RC环境
|
|
6
|
+
|
|
7
|
+
# ReleaseV0.5.4
|
|
8
|
+
#### 发布日期:2021-10-21
|
|
9
|
+
#### 发布范围:全量
|
|
10
|
+
#### 发布内容
|
|
11
|
+
* 迭代:增加md2html方法,并将文件放入public中
|
|
12
|
+
|
|
13
|
+
# ReleaseV0.5.3
|
|
14
|
+
#### 发布日期:2021-10-20
|
|
15
|
+
#### 发布范围:全量
|
|
16
|
+
#### 发布内容
|
|
17
|
+
* 修复:修复飞书机器人触发
|
|
18
|
+
|
|
1
19
|
# ReleaseV0.5.2
|
|
2
20
|
#### 发布日期:2021-10-20
|
|
3
21
|
#### 发布范围:全量
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cloudcc-cli",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.6",
|
|
4
4
|
"description": "cloudcc-cli",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudcc",
|
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
"chalk": "^2.4.2",
|
|
26
26
|
"crypto-js": "^4.1.1",
|
|
27
27
|
"inquirer": "^8.1.0",
|
|
28
|
+
"marked": "^3.0.7",
|
|
29
|
+
"md-to-html": "^1.0.2",
|
|
28
30
|
"mem-fs": "^2.2.1",
|
|
29
31
|
"mem-fs-editor": "^9.0.1",
|
|
30
32
|
"vue-custom-element": "^3.3.0",
|
package/src/publish.js
CHANGED
|
@@ -5,9 +5,8 @@ const fs = require("fs")
|
|
|
5
5
|
const changeVersion = require("../utils/changeVersion")
|
|
6
6
|
const config = require("../package.json")
|
|
7
7
|
const { get, postParams } = require('../utils/http');
|
|
8
|
-
const triggerConfig = require("./triggerConfig.json")
|
|
9
8
|
const projectConfig = JSON.parse(fs.readFileSync('package.json', 'utf8'))
|
|
10
|
-
|
|
9
|
+
const md2html = require("../utils/md2html")
|
|
11
10
|
class Publish {
|
|
12
11
|
constructor() {
|
|
13
12
|
}
|
|
@@ -15,6 +14,7 @@ class Publish {
|
|
|
15
14
|
* 初始化
|
|
16
15
|
*/
|
|
17
16
|
async init() {
|
|
17
|
+
|
|
18
18
|
if (this.checkNpmVersion()) {
|
|
19
19
|
let update = await this.update()
|
|
20
20
|
if ("Yes" == update.update) {
|
|
@@ -24,6 +24,10 @@ class Publish {
|
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
+
// 将readme生成为html,并复制到public中
|
|
28
|
+
let a = new md2html("README")
|
|
29
|
+
a.change();
|
|
30
|
+
|
|
27
31
|
let condition = await this.ask();
|
|
28
32
|
condition.types = [condition.types];
|
|
29
33
|
let types = this.getTagName(condition.types)
|
|
@@ -68,6 +72,7 @@ class Publish {
|
|
|
68
72
|
choices: [
|
|
69
73
|
{ name: "客户环境-Release", value: "Release" },
|
|
70
74
|
{ name: "公司环境-GA", value: "GA" },
|
|
75
|
+
{ name: "production环境-RC", value: "RC" },
|
|
71
76
|
{ name: "uat环境-Beta", value: "Beta" },
|
|
72
77
|
{ name: "测试环境-Dev", value: "Dev" },
|
|
73
78
|
],
|
|
@@ -147,7 +152,7 @@ class Publish {
|
|
|
147
152
|
};
|
|
148
153
|
/**
|
|
149
154
|
* 发布代码
|
|
150
|
-
* @param {发布类型} types:Dev,uat,Release
|
|
155
|
+
* @param {发布类型} types:Dev,uat,Release,GA,RC
|
|
151
156
|
* @param {发布版本} versions:Dev-V12.0.0
|
|
152
157
|
* @returns
|
|
153
158
|
*/
|
|
@@ -242,7 +247,7 @@ class Publish {
|
|
|
242
247
|
|
|
243
248
|
console.log(chalk.green('开始触发构建,请稍等...'));
|
|
244
249
|
types.map((type) => {
|
|
245
|
-
this.triggerBuild(
|
|
250
|
+
this.triggerBuild(type, versions[0])
|
|
246
251
|
})
|
|
247
252
|
} catch (error) {
|
|
248
253
|
console.log(chalk.red('发布失败:' + error));
|
|
@@ -252,21 +257,22 @@ class Publish {
|
|
|
252
257
|
/**
|
|
253
258
|
* 触发代码构建
|
|
254
259
|
*/
|
|
255
|
-
async triggerBuild(
|
|
256
|
-
let trigger =
|
|
260
|
+
async triggerBuild(type, version) {
|
|
261
|
+
let trigger = projectConfig.config["jenkins-" + type]
|
|
257
262
|
if (trigger) {
|
|
258
263
|
await get(trigger);
|
|
259
264
|
console.log();
|
|
260
265
|
console.log(chalk.green(type + '版本开始构建,请注意查看飞书通知。'));
|
|
261
|
-
this.notifyFeishu(
|
|
266
|
+
this.notifyFeishu(type, version, projectConfig.config["feishu-" + type])
|
|
267
|
+
} else {
|
|
268
|
+
console.log(chalk.green(type + '找不到版本构建触发器'));
|
|
262
269
|
}
|
|
263
270
|
}
|
|
264
271
|
|
|
265
272
|
/**
|
|
266
273
|
* 通知飞书群
|
|
267
274
|
*/
|
|
268
|
-
async notifyFeishu(
|
|
269
|
-
let triggers = triggerConfig["feishu-" + packageName + "-" + type]
|
|
275
|
+
async notifyFeishu(type, version, triggers) {
|
|
270
276
|
if (triggers && triggers.length > 0) {
|
|
271
277
|
let body = {
|
|
272
278
|
"msg_type": "interactive",
|
|
@@ -277,7 +283,7 @@ class Publish {
|
|
|
277
283
|
},
|
|
278
284
|
"elements": [{
|
|
279
285
|
"tag": "markdown",
|
|
280
|
-
"content": "项目名称:" +
|
|
286
|
+
"content": "项目名称:" + projectConfig.name + "\nTag:" + type + "\n版本号:" + version
|
|
281
287
|
}, {
|
|
282
288
|
"actions": [{
|
|
283
289
|
"tag": "button",
|
|
@@ -285,7 +291,7 @@ class Publish {
|
|
|
285
291
|
"content": "更新日志",
|
|
286
292
|
"tag": "lark_md"
|
|
287
293
|
},
|
|
288
|
-
"url":
|
|
294
|
+
"url": projectConfig.config["doc-" + type],
|
|
289
295
|
"type": "default",
|
|
290
296
|
"value": {}
|
|
291
297
|
}],
|
package/src/triggerConfig.json
CHANGED
|
@@ -5,12 +5,7 @@
|
|
|
5
5
|
"cloudcc-ui-Release": "http://cloudcc:a83289c3830900a27bb2f1a0046fb309@test.publish.cloudcc.com/view/test%20micro%20service/job/ccui.cloudcc.com(CCWEB%E7%BB%84%E4%BB%B6%E5%BA%93)/build?token=cloudcc-ui",
|
|
6
6
|
"lightning-app-Dev": "http://cloudcc:a83289c3830900a27bb2f1a0046fb309@test.publish.cloudcc.com/view/test%20micro%20service/job/ltnappdev.cloudcc.com/build?token=cloudcc-ltnappdev",
|
|
7
7
|
|
|
8
|
-
"feishu
|
|
9
|
-
"https://open.feishu.cn/open-apis/bot/v2/hook/c77c7f00-78a3-4603-824a-2fa4af70c3c3",
|
|
10
|
-
"https://open.feishu.cn/open-apis/bot/v2/hook/68bfe7c8-97d6-4d56-bea5-60a45d5ac472"
|
|
11
|
-
],
|
|
12
|
-
|
|
13
|
-
"feishu-cloudcc-ui-Release": [
|
|
8
|
+
"feishu": [
|
|
14
9
|
"https://open.feishu.cn/open-apis/bot/v2/hook/c77c7f00-78a3-4603-824a-2fa4af70c3c3",
|
|
15
10
|
"https://open.feishu.cn/open-apis/bot/v2/hook/68bfe7c8-97d6-4d56-bea5-60a45d5ac472"
|
|
16
11
|
],
|
package/test/index.html
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
8
|
+
<title>Document</title>
|
|
9
|
+
<script src="./test.js" type="module"></script>
|
|
10
|
+
|
|
11
|
+
</script>
|
|
12
|
+
</head>
|
|
13
|
+
|
|
14
|
+
<body>
|
|
15
|
+
|
|
16
|
+
</body>
|
|
17
|
+
|
|
18
|
+
</html>
|
package/test/test.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
const publish = require("../src/publish")
|
|
2
1
|
|
|
3
|
-
|
|
2
|
+
const fs = require('fs'); //文件模块
|
|
3
|
+
let md = fs.readFileSync('c:/WorkSpace/Vue/Application/cloudcc/CloudCC-CLI/test/aaa.md', 'utf8')
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
// const marked = require('marked');
|
|
7
|
+
// console.log(marked(md));
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
import md2html from 'md-to-html';
|
|
11
|
+
|
|
12
|
+
const promise = md2html('c:/WorkSpace/Vue/Application/cloudcc/CloudCC-CLI/test/aaa.md', 'c:/WorkSpace/Vue/Application/cloudcc/CloudCC-CLI/test/aaa.html', {
|
|
13
|
+
breaks: true,
|
|
14
|
+
maxdepth: 2,
|
|
15
|
+
title: 'page-title'
|
|
16
|
+
});
|
package/utils/changeVersion.js
CHANGED
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: your name
|
|
3
|
-
* @Date: 2021-09-14 17:11:02
|
|
4
|
-
* @LastEditTime: 2021-09-14 17:11:21
|
|
5
|
-
* @LastEditors: your name
|
|
6
|
-
* @Description: In User Settings Edit
|
|
7
|
-
* @FilePath: \CloudCC-CLI\utils\changeVersion.js
|
|
8
|
-
*/
|
|
9
1
|
module.exports = {
|
|
10
2
|
change(ori) {
|
|
11
3
|
// let ori = "12.0.9";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff')}.markdown-body .octicon{display:inline-block;fill:currentColor;vertical-align:text-bottom}.markdown-body .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.markdown-body .anchor:focus{outline:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#24292e;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{background-color:#b31d28;color:#fafbfc}.markdown-body .pl-c2{background-color:#d73a49;color:#fafbfc}.markdown-body .pl-c2:before{content:"^M"}.markdown-body .pl-sr .pl-cce{color:#22863a;font-weight:700}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:#005cc5;font-weight:700}.markdown-body .pl-mi{color:#24292e;font-style:italic}.markdown-body .pl-mb{color:#24292e;font-weight:700}.markdown-body .pl-md{background-color:#ffeef0;color:#b31d28}.markdown-body .pl-mi1{background-color:#f0fff4;color:#22863a}.markdown-body .pl-mc{background-color:#ffebda;color:#e36209}.markdown-body .pl-mi2{background-color:#005cc5;color:#f6f8fa}.markdown-body .pl-mdr{color:#6f42c1;font-weight:700}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{color:#032f62;text-decoration:underline}.markdown-body details{display:block}.markdown-body summary{display:list-item}.markdown-body a{background-color:transparent}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit;font-weight:bolder}.markdown-body h1{font-size:2em;margin:.67em 0}.markdown-body img{border-style:none}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:content-box;height:0;overflow:visible}.markdown-body input{font:inherit;margin:0}.markdown-body input{overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{background:0 0;border:0;border-bottom:1px solid #dfe2e5;height:0;margin:15px 0;overflow:hidden}.markdown-body hr:before{content:"";display:table}.markdown-body hr:after{clear:both;content:"";display:table}.markdown-body table{border-collapse:collapse;border-spacing:0}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-bottom:0;margin-top:0}.markdown-body h1{font-size:32px}.markdown-body h1,.markdown-body h2{font-weight:600}.markdown-body h2{font-size:24px}.markdown-body h3{font-size:20px}.markdown-body h3,.markdown-body h4{font-weight:600}.markdown-body h4{font-size:16px}.markdown-body h5{font-size:14px}.markdown-body h5,.markdown-body h6{font-weight:600}.markdown-body h6{font-size:12px}.markdown-body p{margin-bottom:10px;margin-top:0}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{margin-bottom:0;margin-top:0;padding-left:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}.markdown-body pre{margin-bottom:0;margin-top:0}.markdown-body input::-webkit-inner-spin-button,.markdown-body input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.markdown-body .border{border:1px solid #e1e4e8!important}.markdown-body .border-0{border:0!important}.markdown-body .border-bottom{border-bottom:1px solid #e1e4e8!important}.markdown-body .rounded-1{border-radius:3px!important}.markdown-body .bg-white{background-color:#fff!important}.markdown-body .bg-gray-light{background-color:#fafbfc!important}.markdown-body .text-gray-light{color:#6a737d!important}.markdown-body .mb-0{margin-bottom:0!important}.markdown-body .my-2{margin-bottom:8px!important;margin-top:8px!important}.markdown-body .pl-0{padding-left:0!important}.markdown-body .py-0{padding-bottom:0!important;padding-top:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .py-2{padding-bottom:8px!important;padding-top:8px!important}.markdown-body .pl-3,.markdown-body .px-3{padding-left:16px!important}.markdown-body .px-3{padding-right:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body .f6{font-size:12px!important}.markdown-body .lh-condensed{line-height:1.25!important}.markdown-body .text-bold{font-weight:600!important}.markdown-body:before{content:"";display:table}.markdown-body:after{clear:both;content:"";display:table}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-bottom:16px;margin-top:0}.markdown-body hr{background-color:#e1e4e8;border:0;height:.25em;margin:24px 0;padding:0}.markdown-body blockquote{border-left:.25em solid #dfe2e5;color:#6a737d;padding:0 1em}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{background-color:#fafbfc;border:1px solid #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5;color:#444d56;display:inline-block;font-size:11px;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-weight:600;line-height:1.25;margin-bottom:16px;margin-top:24px}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{border-bottom:1px solid #eaecef;padding-bottom:.3em}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{color:#6a737d;font-size:.85em}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-bottom:0;margin-top:0}.markdown-body li{word-wrap:break-all}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{font-size:1em;font-style:italic;font-weight:600;margin-top:16px;padding:0}.markdown-body dl dd{margin-bottom:16px;padding:0 16px}.markdown-body table{display:block;overflow:auto;width:100%}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{border:1px solid #dfe2e5;padding:6px 13px}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{background-color:#fff;box-sizing:content-box;max-width:100%}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body code{background-color:rgba(27,31,35,.05);border-radius:3px;font-size:85%;margin:0;padding:.2em .4em}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{background:0 0;border:0;font-size:100%;margin:0;padding:0;white-space:pre;word-break:normal}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{background-color:#f6f8fa;border-radius:3px;font-size:85%;line-height:1.45;overflow:auto;padding:16px}.markdown-body pre code{background-color:transparent;border:0;display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;word-wrap:normal}.markdown-body .commit-tease-sha{color:#444d56;display:inline-block;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:90%}.markdown-body .blob-wrapper{border-bottom-left-radius:3px;border-bottom-right-radius:3px;overflow-x:auto;overflow-y:hidden}.markdown-body .blob-wrapper-embedded{max-height:240px;overflow-y:auto}.markdown-body .blob-num{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;color:rgba(27,31,35,.3);cursor:pointer;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;line-height:20px;min-width:50px;padding-left:10px;padding-right:10px;text-align:right;user-select:none;vertical-align:top;white-space:nowrap;width:1%}.markdown-body .blob-num:hover{color:rgba(27,31,35,.6)}.markdown-body .blob-num:before{content:attr(data-line-number)}.markdown-body .blob-code{line-height:20px;padding-left:10px;padding-right:10px;position:relative;vertical-align:top}.markdown-body .blob-code-inner{color:#24292e;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;overflow:visible;white-space:pre;word-wrap:normal}.markdown-body .pl-token.active,.markdown-body .pl-token:hover{background:#ffea7f;cursor:pointer}.markdown-body kbd{background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1;color:#444d56;display:inline-block;font:11px SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-body :checked+.radio-label{border-color:#0366d6;position:relative;z-index:1}.markdown-body .tab-size[data-tab-size="1"]{-moz-tab-size:1;tab-size:1}.markdown-body .tab-size[data-tab-size="2"]{-moz-tab-size:2;tab-size:2}.markdown-body .tab-size[data-tab-size="3"]{-moz-tab-size:3;tab-size:3}.markdown-body .tab-size[data-tab-size="4"]{-moz-tab-size:4;tab-size:4}.markdown-body .tab-size[data-tab-size="5"]{-moz-tab-size:5;tab-size:5}.markdown-body .tab-size[data-tab-size="6"]{-moz-tab-size:6;tab-size:6}.markdown-body .tab-size[data-tab-size="7"]{-moz-tab-size:7;tab-size:7}.markdown-body .tab-size[data-tab-size="8"]{-moz-tab-size:8;tab-size:8}.markdown-body .tab-size[data-tab-size="9"]{-moz-tab-size:9;tab-size:9}.markdown-body .tab-size[data-tab-size="10"]{-moz-tab-size:10;tab-size:10}.markdown-body .tab-size[data-tab-size="11"]{-moz-tab-size:11;tab-size:11}.markdown-body .tab-size[data-tab-size="12"]{-moz-tab-size:12;tab-size:12}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .pl-3{padding-left:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body .pl-7{padding-left:48px!important}.markdown-body .pl-8{padding-left:64px!important}.markdown-body .pl-9{padding-left:80px!important}.markdown-body .pl-10{padding-left:96px!important}.markdown-body .pl-11{padding-left:112px!important}.markdown-body .pl-12{padding-left:128px!important}
|
|
2
|
+
/*# sourceMappingURL=github-markdown.min.css.map */
|
package/utils/md2html.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
class Md2Html {
|
|
2
|
+
constructor(fileName) {
|
|
3
|
+
this.fs = require('fs'); //文件模块
|
|
4
|
+
this.path = require('path'); //路径模块
|
|
5
|
+
this.marked = require('marked'); //md转html模块
|
|
6
|
+
this.fileName = fileName || 'README';
|
|
7
|
+
this.target = this.fileName + '.md';
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* 检测文件改动
|
|
12
|
+
*/
|
|
13
|
+
watchFile() {
|
|
14
|
+
this.fs.watchFile(this.target, {
|
|
15
|
+
persistent: true, //是否持续监听
|
|
16
|
+
interval: 200, //刷新间隔
|
|
17
|
+
}, (curr, prev) => {
|
|
18
|
+
|
|
19
|
+
if (curr.mtime == prev.mtime) { //比较修改时间,判断保存后内容是否真的发生了变化
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
this.change()
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
change() {
|
|
26
|
+
this.fs.readFile(this.target, 'utf-8', (err, data) => { //读取文件
|
|
27
|
+
|
|
28
|
+
if (err) {
|
|
29
|
+
throw err;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const html = this.marked(data); //将md内容转为html内容
|
|
33
|
+
let template = this.createTemplate();
|
|
34
|
+
template = template.replace('{{{content}}}', html); //替换html内容占位标记
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
let css = this.fs.readFileSync(this.path.join(__dirname) + '/github-markdown.min.css', 'utf8')
|
|
38
|
+
template = template.replace('{{{style}}}', css); //替换css内容占位标记
|
|
39
|
+
this.createFile(template);
|
|
40
|
+
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 创建页面模板
|
|
45
|
+
* @returns {string} 页面骨架字符串
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
createTemplate() {
|
|
49
|
+
const template = `<!DOCTYPE html>
|
|
50
|
+
<html>
|
|
51
|
+
<head>
|
|
52
|
+
<meta charset="utf-8" >
|
|
53
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
54
|
+
<title>md文件转html页面</title>
|
|
55
|
+
<style>
|
|
56
|
+
.markdown-body {
|
|
57
|
+
box-sizing: border-box;
|
|
58
|
+
min-width: 200px;
|
|
59
|
+
max-width: 980px;
|
|
60
|
+
margin: 0 auto;
|
|
61
|
+
padding: 45px;
|
|
62
|
+
}
|
|
63
|
+
@media (max-width: 767px) {
|
|
64
|
+
.markdown-body {
|
|
65
|
+
padding: 15px;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
{{{style}}}
|
|
69
|
+
</style>
|
|
70
|
+
</head>
|
|
71
|
+
<body>
|
|
72
|
+
<article class="markdown-body">
|
|
73
|
+
{{{content}}}
|
|
74
|
+
</article>
|
|
75
|
+
</body>
|
|
76
|
+
</html>`;
|
|
77
|
+
return template;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* 创建html文件
|
|
82
|
+
* @param {string} content 写入html的文件内容
|
|
83
|
+
*/
|
|
84
|
+
createFile(content) {
|
|
85
|
+
const name = this.fileName; //文件名
|
|
86
|
+
const suffix = 'html'; //文件格式
|
|
87
|
+
const fullName = name + '.' + suffix; //文件全名
|
|
88
|
+
const file = this.path.join("public", fullName); //文件地址
|
|
89
|
+
this.fs.writeFile(file, content, 'utf-8', err => {
|
|
90
|
+
if (err) {
|
|
91
|
+
throw err;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
}
|
|
97
|
+
module.exports = Md2Html
|