mirror of https://github.com/halo-dev/halo
feat: support export markdown package. (halo-dev/console#279)
parent
cfa91c6541
commit
b7914e07c4
|
@ -6,21 +6,21 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ant-design/colors": {
|
"@ant-design/colors": {
|
||||||
"version": "3.2.2",
|
"version": "3.2.2",
|
||||||
"resolved": "https://registry.npm.taobao.org/@ant-design/colors/download/@ant-design/colors-3.2.2.tgz?cache=0&sync_timestamp=1596611369344&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40ant-design%2Fcolors%2Fdownload%2F%40ant-design%2Fcolors-3.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-3.2.2.tgz",
|
||||||
"integrity": "sha1-WtQ9YZ6RHzSI66wwPWBuZqhCOQM=",
|
"integrity": "sha512-YKgNbG2dlzqMhA9NtI3/pbY16m3Yl/EeWBRa+lB1X1YaYxHrxNexiQYCLTWO/uDvAjLFMEDU+zR901waBtMtjQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tinycolor2": "^1.4.1"
|
"tinycolor2": "^1.4.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@ant-design/icons": {
|
"@ant-design/icons": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npm.taobao.org/@ant-design/icons/download/@ant-design/icons-2.1.1.tgz?cache=0&sync_timestamp=1596529338545&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40ant-design%2Ficons%2Fdownload%2F%40ant-design%2Ficons-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-2.1.1.tgz",
|
||||||
"integrity": "sha1-e5wI3/1PXUHbZn2dvl4BB9C9mko="
|
"integrity": "sha512-jCH+k2Vjlno4YWl6g535nHR09PwCEmTBKAG6VqF+rhkrSPRLfgpU2maagwbZPLjaHuU5Jd1DFQ2KJpQuI6uG8w=="
|
||||||
},
|
},
|
||||||
"@ant-design/icons-vue": {
|
"@ant-design/icons-vue": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/@ant-design/icons-vue/download/@ant-design/icons-vue-2.0.0.tgz?cache=0&sync_timestamp=1598869253063&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40ant-design%2Ficons-vue%2Fdownload%2F%40ant-design%2Ficons-vue-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@ant-design/icons-vue/-/icons-vue-2.0.0.tgz",
|
||||||
"integrity": "sha1-A1f1AQpATp80qHpLQbKgjfaR284=",
|
"integrity": "sha512-2c0QQE5hL4N48k5NkPG5sdpMl9YnvyNhf0U7YkdZYDlLnspoRU7vIA0UK9eHBs6OpFLcJB6o8eJrIl2ajBskPg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@ant-design/colors": "^3.1.0",
|
"@ant-design/colors": "^3.1.0",
|
||||||
"babel-runtime": "^6.26.0"
|
"babel-runtime": "^6.26.0"
|
||||||
|
@ -1343,17 +1343,17 @@
|
||||||
},
|
},
|
||||||
"@simonwep/pickr": {
|
"@simonwep/pickr": {
|
||||||
"version": "1.7.4",
|
"version": "1.7.4",
|
||||||
"resolved": "https://registry.npm.taobao.org/@simonwep/pickr/download/@simonwep/pickr-1.7.4.tgz",
|
"resolved": "https://registry.npmjs.org/@simonwep/pickr/-/pickr-1.7.4.tgz",
|
||||||
"integrity": "sha1-sU/NlFiQOIuHDNbbTWx41THyUUE=",
|
"integrity": "sha512-fq7jgKJT21uWGC1mARBHvvd1JYlEf93o7SuVOB4Lr0x/2UPuNC9Oe9n/GzVeg4oVtqMDfh1wIEJpsdOJEZb+3g==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"core-js": "^3.6.5",
|
"core-js": "^3.6.5",
|
||||||
"nanopop": "^2.1.0"
|
"nanopop": "^2.1.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"core-js": {
|
"core-js": {
|
||||||
"version": "3.6.5",
|
"version": "3.8.2",
|
||||||
"resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.6.5.tgz?cache=0&sync_timestamp=1589682726446&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-3.6.5.tgz",
|
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.2.tgz",
|
||||||
"integrity": "sha1-c5XcJzrzf7LlDpvT2f6EEoUjHRo="
|
"integrity": "sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -2462,18 +2462,6 @@
|
||||||
"supports-color": "^7.0.0"
|
"supports-color": "^7.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"loader-utils": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
|
|
||||||
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"big.js": "^5.2.2",
|
|
||||||
"emojis-list": "^3.0.0",
|
|
||||||
"json5": "^2.1.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"locate-path": {
|
"locate-path": {
|
||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||||
|
@ -2603,31 +2591,6 @@
|
||||||
"webpack-sources": "^1.4.3"
|
"webpack-sources": "^1.4.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vue-loader-v16": {
|
|
||||||
"version": "npm:vue-loader@16.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.1.tgz",
|
|
||||||
"integrity": "sha512-wz/+HFg/3SBayHWAlZXARcnDTl3VOChrfW9YnxvAweiuyKX/7IGx1ad/4yJHmwhgWlOVYMAbTiI7GV8G33PfGQ==",
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"chalk": "^4.1.0",
|
|
||||||
"hash-sum": "^2.0.0",
|
|
||||||
"loader-utils": "^2.0.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"chalk": {
|
|
||||||
"version": "4.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
|
|
||||||
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"ansi-styles": "^4.1.0",
|
|
||||||
"supports-color": "^7.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"wrap-ansi": {
|
"wrap-ansi": {
|
||||||
"version": "6.2.0",
|
"version": "6.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
|
||||||
|
@ -3016,8 +2979,8 @@
|
||||||
},
|
},
|
||||||
"add-dom-event-listener": {
|
"add-dom-event-listener": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/add-dom-event-listener/download/add-dom-event-listener-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz",
|
||||||
"integrity": "sha1-apLbOg3Qq8JU4JXA8dwUrLuq4xA=",
|
"integrity": "sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"object-assign": "4.x"
|
"object-assign": "4.x"
|
||||||
}
|
}
|
||||||
|
@ -3113,9 +3076,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ant-design-vue": {
|
"ant-design-vue": {
|
||||||
"version": "1.7.1",
|
"version": "1.7.2",
|
||||||
"resolved": "https://registry.npm.taobao.org/ant-design-vue/download/ant-design-vue-1.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-1.7.2.tgz",
|
||||||
"integrity": "sha1-55d/kjl+/rEXM71hMcFv2rz554Q=",
|
"integrity": "sha512-iVskTSG62OSiptyGQkvyhoeLlLMiqKtAOTcWZ7MmsMrj38h0TCpGtqSYS4/fwq4yYgyzloYSteBo8U8TrV99RA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@ant-design/icons": "^2.1.1",
|
"@ant-design/icons": "^2.1.1",
|
||||||
"@ant-design/icons-vue": "^2.0.0",
|
"@ant-design/icons-vue": "^2.0.0",
|
||||||
|
@ -3229,8 +3192,8 @@
|
||||||
},
|
},
|
||||||
"array-tree-filter": {
|
"array-tree-filter": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/array-tree-filter/download/array-tree-filter-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz",
|
||||||
"integrity": "sha1-hzrAD+yDdJ8lWsjdCDgUtPYykZA="
|
"integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw=="
|
||||||
},
|
},
|
||||||
"array-union": {
|
"array-union": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
|
@ -3358,9 +3321,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"async-validator": {
|
"async-validator": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.1",
|
||||||
"resolved": "https://registry.npm.taobao.org/async-validator/download/async-validator-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.5.1.tgz",
|
||||||
"integrity": "sha1-hxs+WUEkv0xOt7zRqeeLRPOwnK4="
|
"integrity": "sha512-DDmKA7sdSAJtTVeNZHrnr2yojfFaoeW8MfQN8CeuXg8DDQHTqKk9Fdv38dSvnesHoO8MUwMI2HphOeSyIF+wmQ=="
|
||||||
},
|
},
|
||||||
"asynckit": {
|
"asynckit": {
|
||||||
"version": "0.4.0",
|
"version": "0.4.0",
|
||||||
|
@ -3498,8 +3461,8 @@
|
||||||
},
|
},
|
||||||
"babel-helper-vue-jsx-merge-props": {
|
"babel-helper-vue-jsx-merge-props": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"resolved": "https://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
|
||||||
"integrity": "sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY="
|
"integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
|
||||||
},
|
},
|
||||||
"babel-jest": {
|
"babel-jest": {
|
||||||
"version": "26.3.0",
|
"version": "26.3.0",
|
||||||
|
@ -4906,8 +4869,8 @@
|
||||||
},
|
},
|
||||||
"classnames": {
|
"classnames": {
|
||||||
"version": "2.2.6",
|
"version": "2.2.6",
|
||||||
"resolved": "https://registry.npm.taobao.org/classnames/download/classnames-2.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
|
||||||
"integrity": "sha1-Q5Nb/90pHzJtrQogUwmzjQD2UM4="
|
"integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
|
||||||
},
|
},
|
||||||
"clean-css": {
|
"clean-css": {
|
||||||
"version": "4.2.3",
|
"version": "4.2.3",
|
||||||
|
@ -5375,7 +5338,7 @@
|
||||||
},
|
},
|
||||||
"component-classes": {
|
"component-classes": {
|
||||||
"version": "1.2.6",
|
"version": "1.2.6",
|
||||||
"resolved": "https://registry.npm.taobao.org/component-classes/download/component-classes-1.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/component-classes/-/component-classes-1.2.6.tgz",
|
||||||
"integrity": "sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=",
|
"integrity": "sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"component-indexof": "0.0.3"
|
"component-indexof": "0.0.3"
|
||||||
|
@ -5389,7 +5352,7 @@
|
||||||
},
|
},
|
||||||
"component-indexof": {
|
"component-indexof": {
|
||||||
"version": "0.0.3",
|
"version": "0.0.3",
|
||||||
"resolved": "https://registry.npm.taobao.org/component-indexof/download/component-indexof-0.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz",
|
||||||
"integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ="
|
"integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ="
|
||||||
},
|
},
|
||||||
"compressible": {
|
"compressible": {
|
||||||
|
@ -6507,12 +6470,12 @@
|
||||||
},
|
},
|
||||||
"dom-align": {
|
"dom-align": {
|
||||||
"version": "1.12.0",
|
"version": "1.12.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/dom-align/download/dom-align-1.12.0.tgz?cache=0&sync_timestamp=1589854754211&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdom-align%2Fdownload%2Fdom-align-1.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.0.tgz",
|
||||||
"integrity": "sha1-VvtxVt8LkQmYMDZNLUj4iWP1opw="
|
"integrity": "sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA=="
|
||||||
},
|
},
|
||||||
"dom-closest": {
|
"dom-closest": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/dom-closest/download/dom-closest-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/dom-closest/-/dom-closest-0.2.0.tgz",
|
||||||
"integrity": "sha1-69n5HRvyLo1vR3h2u80+yQIWwM8=",
|
"integrity": "sha1-69n5HRvyLo1vR3h2u80+yQIWwM8=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"dom-matches": ">=1.0.1"
|
"dom-matches": ">=1.0.1"
|
||||||
|
@ -6535,13 +6498,13 @@
|
||||||
},
|
},
|
||||||
"dom-matches": {
|
"dom-matches": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/dom-matches/download/dom-matches-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/dom-matches/-/dom-matches-2.0.0.tgz",
|
||||||
"integrity": "sha1-0nKLQWqHUzmA6wibhI0lPPI6dYw="
|
"integrity": "sha1-0nKLQWqHUzmA6wibhI0lPPI6dYw="
|
||||||
},
|
},
|
||||||
"dom-scroll-into-view": {
|
"dom-scroll-into-view": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npm.taobao.org/dom-scroll-into-view/download/dom-scroll-into-view-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz",
|
||||||
"integrity": "sha1-DezIUigB/Y0/HGujVadNOCxfmJs="
|
"integrity": "sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w=="
|
||||||
},
|
},
|
||||||
"dom-serializer": {
|
"dom-serializer": {
|
||||||
"version": "0.2.2",
|
"version": "0.2.2",
|
||||||
|
@ -9118,7 +9081,7 @@
|
||||||
},
|
},
|
||||||
"intersperse": {
|
"intersperse": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/intersperse/download/intersperse-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/intersperse/-/intersperse-1.0.0.tgz",
|
||||||
"integrity": "sha1-8lYfsc/vn1J3zDNHoiiGtDUaUYE="
|
"integrity": "sha1-8lYfsc/vn1J3zDNHoiiGtDUaUYE="
|
||||||
},
|
},
|
||||||
"invariant": {
|
"invariant": {
|
||||||
|
@ -9323,13 +9286,13 @@
|
||||||
},
|
},
|
||||||
"is-mobile": {
|
"is-mobile": {
|
||||||
"version": "2.2.2",
|
"version": "2.2.2",
|
||||||
"resolved": "https://registry.npm.taobao.org/is-mobile/download/is-mobile-2.2.2.tgz?cache=0&sync_timestamp=1592980494392&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-mobile%2Fdownload%2Fis-mobile-2.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-2.2.2.tgz",
|
||||||
"integrity": "sha1-9snF1Q7gElTOBec5vdg18e1OmVQ="
|
"integrity": "sha512-wW/SXnYJkTjs++tVK5b6kVITZpAZPtUrt9SF80vvxGiF/Oywal+COk1jlRkiVq15RFNEQKQY31TkV24/1T5cVg=="
|
||||||
},
|
},
|
||||||
"is-negative-zero": {
|
"is-negative-zero": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npm.taobao.org/is-negative-zero/download/is-negative-zero-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
|
||||||
"integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE="
|
"integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w=="
|
||||||
},
|
},
|
||||||
"is-number": {
|
"is-number": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
|
@ -9485,8 +9448,8 @@
|
||||||
},
|
},
|
||||||
"ismobilejs": {
|
"ismobilejs": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npm.taobao.org/ismobilejs/download/ismobilejs-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz",
|
||||||
"integrity": "sha1-xWygro5Sskyg8iul7zIVot27qg4="
|
"integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw=="
|
||||||
},
|
},
|
||||||
"isobject": {
|
"isobject": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
|
@ -10427,7 +10390,7 @@
|
||||||
},
|
},
|
||||||
"json2mq": {
|
"json2mq": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/json2mq/download/json2mq-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz",
|
||||||
"integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=",
|
"integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"string-convert": "^0.2.0"
|
"string-convert": "^0.2.0"
|
||||||
|
@ -11619,8 +11582,8 @@
|
||||||
},
|
},
|
||||||
"moment": {
|
"moment": {
|
||||||
"version": "2.29.1",
|
"version": "2.29.1",
|
||||||
"resolved": "https://registry.npm.taobao.org/moment/download/moment-2.29.1.tgz",
|
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
|
||||||
"integrity": "sha1-sr52n6MZQL6e7qZGnAdeNQBvo9M="
|
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
|
||||||
},
|
},
|
||||||
"move-concurrently": {
|
"move-concurrently": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
|
@ -11659,8 +11622,8 @@
|
||||||
},
|
},
|
||||||
"mutationobserver-shim": {
|
"mutationobserver-shim": {
|
||||||
"version": "0.3.7",
|
"version": "0.3.7",
|
||||||
"resolved": "https://registry.npm.taobao.org/mutationobserver-shim/download/mutationobserver-shim-0.3.7.tgz",
|
"resolved": "https://registry.npmjs.org/mutationobserver-shim/-/mutationobserver-shim-0.3.7.tgz",
|
||||||
"integrity": "sha1-i/YzsMCwKRoRByVe0ywTCIqMW/M="
|
"integrity": "sha512-oRIDTyZQU96nAiz2AQyngwx1e89iApl2hN5AOYwyxLUB47UYsU3Wv9lJWqH5y/QdiYkc5HQLi23ZNB3fELdHcQ=="
|
||||||
},
|
},
|
||||||
"mute-stream": {
|
"mute-stream": {
|
||||||
"version": "0.0.8",
|
"version": "0.0.8",
|
||||||
|
@ -11707,8 +11670,8 @@
|
||||||
},
|
},
|
||||||
"nanopop": {
|
"nanopop": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/nanopop/download/nanopop-2.1.0.tgz?cache=0&sync_timestamp=1598256090184&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnanopop%2Fdownload%2Fnanopop-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/nanopop/-/nanopop-2.1.0.tgz",
|
||||||
"integrity": "sha1-I0dlE87iQFiIr9LopLVAZrcLnmA="
|
"integrity": "sha512-jGTwpFRexSH+fxappnGQtN9dspgE2ipa1aOjtR24igG0pv6JCxImIAmrLRHX+zUF5+1wtsFVbKyfP51kIGAVNw=="
|
||||||
},
|
},
|
||||||
"native-request": {
|
"native-request": {
|
||||||
"version": "1.0.7",
|
"version": "1.0.7",
|
||||||
|
@ -12079,8 +12042,8 @@
|
||||||
},
|
},
|
||||||
"omit.js": {
|
"omit.js": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npm.taobao.org/omit.js/download/omit.js-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/omit.js/-/omit.js-1.0.2.tgz",
|
||||||
"integrity": "sha1-kaFPDrqEBm36AVvzDkdMR/MLyFg=",
|
"integrity": "sha512-/QPc6G2NS+8d4L/cQhbk6Yit1WTB6Us2g84A7A/1+w9d/eRGHyEqC5kkQtHVoHZ5NFWGG7tUGgrhVZwgZanKrQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"babel-runtime": "^6.23.0"
|
"babel-runtime": "^6.23.0"
|
||||||
}
|
}
|
||||||
|
@ -13502,8 +13465,8 @@
|
||||||
},
|
},
|
||||||
"raf": {
|
"raf": {
|
||||||
"version": "3.4.1",
|
"version": "3.4.1",
|
||||||
"resolved": "https://registry.npm.taobao.org/raf/download/raf-3.4.1.tgz?cache=0&sync_timestamp=1586264003311&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fraf%2Fdownload%2Fraf-3.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
|
||||||
"integrity": "sha1-B0LpmkplUvRF1z4+4DKK8P8e3jk=",
|
"integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"performance-now": "^2.1.0"
|
"performance-now": "^2.1.0"
|
||||||
}
|
}
|
||||||
|
@ -13929,8 +13892,8 @@
|
||||||
},
|
},
|
||||||
"resize-observer-polyfill": {
|
"resize-observer-polyfill": {
|
||||||
"version": "1.5.1",
|
"version": "1.5.1",
|
||||||
"resolved": "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
|
||||||
"integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ="
|
"integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
|
||||||
},
|
},
|
||||||
"resolve": {
|
"resolve": {
|
||||||
"version": "1.17.0",
|
"version": "1.17.0",
|
||||||
|
@ -14344,13 +14307,13 @@
|
||||||
},
|
},
|
||||||
"shallow-equal": {
|
"shallow-equal": {
|
||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npm.taobao.org/shallow-equal/download/shallow-equal-1.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
|
||||||
"integrity": "sha1-TBar+lYEOqINBQMk76aJQLDaedo="
|
"integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
|
||||||
},
|
},
|
||||||
"shallowequal": {
|
"shallowequal": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/shallowequal/download/shallowequal-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
|
||||||
"integrity": "sha1-GI1SHelbkIdAT9TctosT3wrk5/g="
|
"integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
|
||||||
},
|
},
|
||||||
"shebang-command": {
|
"shebang-command": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
|
@ -14918,7 +14881,7 @@
|
||||||
},
|
},
|
||||||
"string-convert": {
|
"string-convert": {
|
||||||
"version": "0.2.1",
|
"version": "0.2.1",
|
||||||
"resolved": "https://registry.npm.taobao.org/string-convert/download/string-convert-0.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz",
|
||||||
"integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c="
|
"integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c="
|
||||||
},
|
},
|
||||||
"string-length": {
|
"string-length": {
|
||||||
|
@ -15450,8 +15413,8 @@
|
||||||
},
|
},
|
||||||
"tinycolor2": {
|
"tinycolor2": {
|
||||||
"version": "1.4.2",
|
"version": "1.4.2",
|
||||||
"resolved": "https://registry.npm.taobao.org/tinycolor2/download/tinycolor2-1.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz",
|
||||||
"integrity": "sha1-P2pNEHGtB2dtf6Ry4frECnGdiAM="
|
"integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA=="
|
||||||
},
|
},
|
||||||
"tmp": {
|
"tmp": {
|
||||||
"version": "0.0.33",
|
"version": "0.0.33",
|
||||||
|
@ -16169,6 +16132,87 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"vue-loader-v16": {
|
||||||
|
"version": "npm:vue-loader@16.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz",
|
||||||
|
"integrity": "sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"requires": {
|
||||||
|
"chalk": "^4.1.0",
|
||||||
|
"hash-sum": "^2.0.0",
|
||||||
|
"loader-utils": "^2.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-styles": {
|
||||||
|
"version": "4.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||||
|
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"requires": {
|
||||||
|
"color-convert": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^4.1.0",
|
||||||
|
"supports-color": "^7.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-convert": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"requires": {
|
||||||
|
"color-name": "~1.1.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-name": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"has-flag": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"loader-utils": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"requires": {
|
||||||
|
"big.js": "^5.2.2",
|
||||||
|
"emojis-list": "^3.0.0",
|
||||||
|
"json5": "^2.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"supports-color": {
|
||||||
|
"version": "7.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||||
|
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"requires": {
|
||||||
|
"has-flag": "^4.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"vue-ls": {
|
"vue-ls": {
|
||||||
"version": "3.2.1",
|
"version": "3.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/vue-ls/-/vue-ls-3.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/vue-ls/-/vue-ls-3.2.1.tgz",
|
||||||
|
@ -16176,8 +16220,8 @@
|
||||||
},
|
},
|
||||||
"vue-ref": {
|
"vue-ref": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/vue-ref/download/vue-ref-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/vue-ref/-/vue-ref-2.0.0.tgz",
|
||||||
"integrity": "sha1-SDCE1zKr7RHaeWd4qCZqOvDqGpw="
|
"integrity": "sha512-uKNKpFOVeWNqS2mrBZqnpLyXJo5Q+vnkex6JvpENvhXHFNBW/SJTP8vJywLuVT3DpxwXcF9N0dyIiZ4/NpTexQ=="
|
||||||
},
|
},
|
||||||
"vue-router": {
|
"vue-router": {
|
||||||
"version": "3.4.3",
|
"version": "3.4.3",
|
||||||
|
@ -16339,8 +16383,8 @@
|
||||||
},
|
},
|
||||||
"warning": {
|
"warning": {
|
||||||
"version": "4.0.3",
|
"version": "4.0.3",
|
||||||
"resolved": "https://registry.npm.taobao.org/warning/download/warning-4.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
|
||||||
"integrity": "sha1-Fungd+uKhtavfWSqHgX9hbRnjKM=",
|
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"loose-envify": "^1.0.0"
|
"loose-envify": "^1.0.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
"test:unit": "vue-cli-service test:unit"
|
"test:unit": "vue-cli-service test:unit"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ant-design-vue": "^1.7.1",
|
"ant-design-vue": "^1.7.2",
|
||||||
"axios": "^0.19.2",
|
"axios": "^0.19.2",
|
||||||
"dayjs": "^1.8.36",
|
"dayjs": "^1.8.36",
|
||||||
"enquire.js": "^2.1.6",
|
"enquire.js": "^2.1.6",
|
||||||
|
|
|
@ -65,4 +65,32 @@ backupApi.deleteExportedData = filename => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
backupApi.exportMarkdowns = needFrontMatter => {
|
||||||
|
return service({
|
||||||
|
url: `${baseUrl}/markdown/export`,
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
needFrontMatter: needFrontMatter
|
||||||
|
},
|
||||||
|
timeout: 8640000 // 24 hours
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
backupApi.listExportedMarkdowns = () => {
|
||||||
|
return service({
|
||||||
|
url: `${baseUrl}/markdown/export`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
backupApi.deleteExportedMarkdown = filename => {
|
||||||
|
return service({
|
||||||
|
url: `${baseUrl}/markdown/export`,
|
||||||
|
params: {
|
||||||
|
filename: filename
|
||||||
|
},
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export default backupApi
|
export default backupApi
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
import service from '@/utils/service'
|
|
||||||
|
|
||||||
const baseUrl = '/api/admin/static_page'
|
|
||||||
|
|
||||||
const staticPageApi = {}
|
|
||||||
|
|
||||||
staticPageApi.list = () => {
|
|
||||||
return service({
|
|
||||||
url: baseUrl,
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
staticPageApi.generate = () => {
|
|
||||||
return service({
|
|
||||||
url: `${baseUrl}/generate`,
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
staticPageApi.deploy = () => {
|
|
||||||
return service({
|
|
||||||
url: `${baseUrl}/deploy`,
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
staticPageApi.deployType = {
|
|
||||||
GIT: {
|
|
||||||
type: 'GIT',
|
|
||||||
text: 'Git'
|
|
||||||
},
|
|
||||||
NETLIFY: {
|
|
||||||
type: 'NETLIFY',
|
|
||||||
text: 'Netlify'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default staticPageApi
|
|
|
@ -185,13 +185,6 @@ export const asyncRouterMap = [
|
||||||
component: () => import('@/views/system/ToolList'),
|
component: () => import('@/views/system/ToolList'),
|
||||||
meta: { title: '小工具', hiddenHeaderContent: false }
|
meta: { title: '小工具', hiddenHeaderContent: false }
|
||||||
},
|
},
|
||||||
// {
|
|
||||||
// path: '/system/tools/staticpages',
|
|
||||||
// name: 'StaticPagesManage',
|
|
||||||
// hidden: true,
|
|
||||||
// component: () => import('@/views/system/staticpages/StaticPagesManage'),
|
|
||||||
// meta: { title: '静态部署', hiddenHeaderContent: false }
|
|
||||||
// },
|
|
||||||
{
|
{
|
||||||
path: '/system/about',
|
path: '/system/about',
|
||||||
name: 'About',
|
name: 'About',
|
||||||
|
|
|
@ -25,29 +25,6 @@
|
||||||
>进入</a-button>
|
>进入</a-button>
|
||||||
</a-card>
|
</a-card>
|
||||||
</a-col>
|
</a-col>
|
||||||
<!-- <a-col
|
|
||||||
:xl="6"
|
|
||||||
:lg="6"
|
|
||||||
:md="12"
|
|
||||||
:sm="24"
|
|
||||||
:xs="24"
|
|
||||||
:style="{ marginBottom: '12px' }"
|
|
||||||
>
|
|
||||||
<a-card
|
|
||||||
:bordered="false"
|
|
||||||
:bodyStyle="{ padding: '16px' }"
|
|
||||||
>
|
|
||||||
<div slot="title">
|
|
||||||
<a-icon type="html5" /> 静态部署
|
|
||||||
</div>
|
|
||||||
<p style="min-height: 50px;">生成静态页面并部署到 Github Pages 之类的托管平台</p>
|
|
||||||
<a-button
|
|
||||||
type="primary"
|
|
||||||
style="float:right"
|
|
||||||
@click="handleToStaticPagesManage"
|
|
||||||
>管理</a-button>
|
|
||||||
</a-card>
|
|
||||||
</a-col> -->
|
|
||||||
<a-col
|
<a-col
|
||||||
:xl="6"
|
:xl="6"
|
||||||
:lg="6"
|
:lg="6"
|
||||||
|
@ -79,6 +56,12 @@
|
||||||
>
|
>
|
||||||
数据导出
|
数据导出
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
|
<a-menu-item
|
||||||
|
key="3"
|
||||||
|
@click="exportMarkdownDrawerVisible = true"
|
||||||
|
>
|
||||||
|
导出文章为 Markdown 文档
|
||||||
|
</a-menu-item>
|
||||||
</a-menu>
|
</a-menu>
|
||||||
<a-button class="ml-2"> 备份
|
<a-button class="ml-2"> 备份
|
||||||
<a-icon type="down" />
|
<a-icon type="down" />
|
||||||
|
@ -127,22 +110,26 @@
|
||||||
</a-modal>
|
</a-modal>
|
||||||
<BackupWorkDirDrawer v-model="backupWorkDirDrawerVisible"></BackupWorkDirDrawer>
|
<BackupWorkDirDrawer v-model="backupWorkDirDrawerVisible"></BackupWorkDirDrawer>
|
||||||
<ExportDataDrawer v-model="exportDataDrawerVisible"></ExportDataDrawer>
|
<ExportDataDrawer v-model="exportDataDrawerVisible"></ExportDataDrawer>
|
||||||
|
<ExportMarkdownDrawer v-model="exportMarkdownDrawerVisible"></ExportMarkdownDrawer>
|
||||||
</page-view>
|
</page-view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapGetters } from 'vuex'
|
|
||||||
import backupApi from '@/api/backup'
|
|
||||||
import { PageView } from '@/layouts'
|
import { PageView } from '@/layouts'
|
||||||
import BackupWorkDirDrawer from './components/BackupWorkDirDrawer'
|
import BackupWorkDirDrawer from './components/BackupWorkDirDrawer'
|
||||||
import ExportDataDrawer from './components/ExportDataDrawer'
|
import ExportDataDrawer from './components/ExportDataDrawer'
|
||||||
|
import ExportMarkdownDrawer from './components/ExportMarkdownDrawer'
|
||||||
|
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
|
||||||
|
import backupApi from '@/api/backup'
|
||||||
export default {
|
export default {
|
||||||
components: { PageView, BackupWorkDirDrawer, ExportDataDrawer },
|
components: { PageView, BackupWorkDirDrawer, ExportDataDrawer, ExportMarkdownDrawer },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
backupWorkDirDrawerVisible: false,
|
backupWorkDirDrawerVisible: false,
|
||||||
exportDataDrawerVisible: false,
|
exportDataDrawerVisible: false,
|
||||||
|
exportMarkdownDrawerVisible: false,
|
||||||
markdownUpload: false,
|
markdownUpload: false,
|
||||||
uploadHandler: backupApi.importMarkdown,
|
uploadHandler: backupApi.importMarkdown,
|
||||||
}
|
}
|
||||||
|
@ -165,9 +152,6 @@ export default {
|
||||||
handleToDeveloperOptions() {
|
handleToDeveloperOptions() {
|
||||||
this.$router.push({ name: 'DeveloperOptions' })
|
this.$router.push({ name: 'DeveloperOptions' })
|
||||||
},
|
},
|
||||||
// handleToStaticPagesManage() {
|
|
||||||
// this.$router.push({ name: 'StaticPagesManage' })
|
|
||||||
// },
|
|
||||||
onUploadClose() {
|
onUploadClose() {
|
||||||
this.$refs.upload.handleClearFileList()
|
this.$refs.upload.handleClearFileList()
|
||||||
},
|
},
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
>
|
>
|
||||||
<a-col :span="24">
|
<a-col :span="24">
|
||||||
<a-alert
|
<a-alert
|
||||||
message="注意:备份后生成的压缩文件存储在临时文件中,重启服务器会造成备份文件的丢失,所以请尽快下载!"
|
message="注意:备份后生成的压缩文件存储在临时文件中,重启服务器会造成备份文件的丢失,所以请尽快下载。"
|
||||||
banner
|
banner
|
||||||
closable
|
closable
|
||||||
/>
|
/>
|
||||||
|
@ -89,19 +89,19 @@ export default {
|
||||||
backuping: false,
|
backuping: false,
|
||||||
loading: false,
|
loading: false,
|
||||||
backupErrored: false,
|
backupErrored: false,
|
||||||
backups: []
|
backups: [],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
model: {
|
model: {
|
||||||
prop: 'visible',
|
prop: 'visible',
|
||||||
event: 'close'
|
event: 'close',
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
visible: {
|
visible: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
default: true
|
default: true,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleAfterVisibleChanged(visible) {
|
handleAfterVisibleChanged(visible) {
|
||||||
|
@ -113,7 +113,7 @@ export default {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
backupApi
|
backupApi
|
||||||
.listWorkDirBackups()
|
.listWorkDirBackups()
|
||||||
.then(response => {
|
.then((response) => {
|
||||||
this.backups = response.data.data
|
this.backups = response.data.data
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
|
@ -153,7 +153,7 @@ export default {
|
||||||
},
|
},
|
||||||
onClose() {
|
onClose() {
|
||||||
this.$emit('close', false)
|
this.$emit('close', false)
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
>
|
>
|
||||||
<a-col :span="24">
|
<a-col :span="24">
|
||||||
<a-alert
|
<a-alert
|
||||||
message="注意:导出后的数据文件存储在临时文件中,重启服务器会造成备份文件的丢失,所以请尽快下载!"
|
message="注意:导出后的数据文件存储在临时文件中,重启服务器会造成备份文件的丢失,所以请尽快下载。"
|
||||||
banner
|
banner
|
||||||
closable
|
closable
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -0,0 +1,166 @@
|
||||||
|
<template>
|
||||||
|
<a-drawer
|
||||||
|
title="导出文章为 Markdown 文档"
|
||||||
|
:width="isMobile()?'100%':'480'"
|
||||||
|
closable
|
||||||
|
:visible="visible"
|
||||||
|
destroyOnClose
|
||||||
|
@close="onClose"
|
||||||
|
:afterVisibleChange="handleAfterVisibleChanged"
|
||||||
|
>
|
||||||
|
<a-row
|
||||||
|
type="flex"
|
||||||
|
align="middle"
|
||||||
|
>
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-alert
|
||||||
|
message="注意:导出后的数据文件存储在临时文件中,重启服务器会造成备份文件的丢失,所以请尽快下载。"
|
||||||
|
banner
|
||||||
|
closable
|
||||||
|
/>
|
||||||
|
<a-divider>历史文件</a-divider>
|
||||||
|
<a-list
|
||||||
|
itemLayout="vertical"
|
||||||
|
size="small"
|
||||||
|
:dataSource="files"
|
||||||
|
:loading="loading"
|
||||||
|
>
|
||||||
|
<a-list-item
|
||||||
|
slot="renderItem"
|
||||||
|
slot-scope="file"
|
||||||
|
>
|
||||||
|
<a-button
|
||||||
|
slot="extra"
|
||||||
|
type="link"
|
||||||
|
style="color: red"
|
||||||
|
icon="delete"
|
||||||
|
:loading="file.deleting"
|
||||||
|
@click="handleFileDeleteClick(file)"
|
||||||
|
>删除</a-button>
|
||||||
|
<a-list-item-meta>
|
||||||
|
<a
|
||||||
|
slot="title"
|
||||||
|
:href="file.downloadLink"
|
||||||
|
>
|
||||||
|
<a-icon
|
||||||
|
type="schedule"
|
||||||
|
style="color: #52c41a"
|
||||||
|
/>
|
||||||
|
{{ file.filename }}
|
||||||
|
</a>
|
||||||
|
<p slot="description">{{ file.updateTime | timeAgo }}/{{ file.fileSize | fileSizeFormat }}</p>
|
||||||
|
</a-list-item-meta>
|
||||||
|
</a-list-item>
|
||||||
|
</a-list>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<a-divider class="divider-transparent" />
|
||||||
|
<div class="bottom-control">
|
||||||
|
<a-space>
|
||||||
|
<a-popconfirm
|
||||||
|
title="是否同时为 Markdown 文档生成 Front Matter?"
|
||||||
|
@confirm="handleExportClick(true)"
|
||||||
|
@cancel="handleExportClick(false)"
|
||||||
|
okText="是"
|
||||||
|
cancelText="否"
|
||||||
|
>
|
||||||
|
<ReactiveButton
|
||||||
|
type="primary"
|
||||||
|
icon="download"
|
||||||
|
@callback="handleBackupedCallback"
|
||||||
|
:loading="backuping"
|
||||||
|
:errored="backupErrored"
|
||||||
|
text="备份"
|
||||||
|
loadedText="备份成功"
|
||||||
|
erroredText="备份失败"
|
||||||
|
></ReactiveButton>
|
||||||
|
</a-popconfirm>
|
||||||
|
<a-button
|
||||||
|
type="dashed"
|
||||||
|
icon="reload"
|
||||||
|
:loading="loading"
|
||||||
|
@click="handleListBackups"
|
||||||
|
>刷新</a-button>
|
||||||
|
</a-space>
|
||||||
|
</div>
|
||||||
|
</a-drawer>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { mixin, mixinDevice } from '@/utils/mixin.js'
|
||||||
|
import backupApi from '@/api/backup'
|
||||||
|
export default {
|
||||||
|
name: 'ExportDataDrawer',
|
||||||
|
mixins: [mixin, mixinDevice],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
backuping: false,
|
||||||
|
loading: false,
|
||||||
|
backupErrored: false,
|
||||||
|
files: [],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
model: {
|
||||||
|
prop: 'visible',
|
||||||
|
event: 'close',
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
visible: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleAfterVisibleChanged(visible) {
|
||||||
|
if (visible) {
|
||||||
|
this.handleListBackups()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleListBackups() {
|
||||||
|
this.loading = true
|
||||||
|
backupApi
|
||||||
|
.listExportedMarkdowns()
|
||||||
|
.then((response) => {
|
||||||
|
this.files = response.data.data
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.loading = false
|
||||||
|
}, 200)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleExportClick(needFrontMatter = false) {
|
||||||
|
this.backuping = true
|
||||||
|
backupApi
|
||||||
|
.exportMarkdowns(needFrontMatter)
|
||||||
|
.catch(() => {
|
||||||
|
this.backupErrored = true
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.backuping = false
|
||||||
|
}, 400)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleBackupedCallback() {
|
||||||
|
if (this.backupErrored) {
|
||||||
|
this.backupErrored = false
|
||||||
|
} else {
|
||||||
|
this.handleListBackups()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleFileDeleteClick(file) {
|
||||||
|
file.deleting = true
|
||||||
|
backupApi.deleteExportedMarkdown(file.filename).finally(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
file.deleting = false
|
||||||
|
}, 400)
|
||||||
|
this.handleListBackups()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onClose() {
|
||||||
|
this.$emit('close', false)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -1,43 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<a-row>
|
|
||||||
<a-col :span="24">
|
|
||||||
<div class="card-container">
|
|
||||||
<a-tabs type="card">
|
|
||||||
<a-tab-pane key="environment">
|
|
||||||
<span slot="tab">
|
|
||||||
<a-icon type="folder" />文件列表
|
|
||||||
</span>
|
|
||||||
<StaticPagesList />
|
|
||||||
</a-tab-pane>
|
|
||||||
<a-tab-pane key="runtimeLogs">
|
|
||||||
<span slot="tab">
|
|
||||||
<a-icon type="appstore" />部署平台
|
|
||||||
</span>
|
|
||||||
<DeploySettingsForm />
|
|
||||||
</a-tab-pane>
|
|
||||||
<a-tab-pane key="optionsList">
|
|
||||||
<span slot="tab">
|
|
||||||
<a-icon type="setting" />配置
|
|
||||||
</span>
|
|
||||||
<SettingsForm />
|
|
||||||
</a-tab-pane>
|
|
||||||
</a-tabs>
|
|
||||||
</div>
|
|
||||||
</a-col>
|
|
||||||
</a-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import StaticPagesList from './tabs/StaticPagesList'
|
|
||||||
import DeploySettingsForm from './tabs/DeploySettingsForm'
|
|
||||||
import SettingsForm from './tabs/SettingsForm'
|
|
||||||
export default {
|
|
||||||
name: 'StaticPagesManage',
|
|
||||||
components: {
|
|
||||||
StaticPagesList,
|
|
||||||
DeploySettingsForm,
|
|
||||||
SettingsForm
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,106 +0,0 @@
|
||||||
<template>
|
|
||||||
<a-form
|
|
||||||
layout="vertical"
|
|
||||||
:wrapperCol="wrapperCol"
|
|
||||||
>
|
|
||||||
<a-form-item label="部署平台:">
|
|
||||||
<a-select v-model="options.static_deploy_type">
|
|
||||||
<a-select-option
|
|
||||||
v-for="item in Object.keys(deployType)"
|
|
||||||
:key="item"
|
|
||||||
:value="item"
|
|
||||||
>{{ deployType[item].text }}</a-select-option>
|
|
||||||
</a-select>
|
|
||||||
</a-form-item>
|
|
||||||
<div
|
|
||||||
id="gitForm"
|
|
||||||
v-show="options.static_deploy_type === 'GIT'"
|
|
||||||
>
|
|
||||||
<a-form-item label="域名:">
|
|
||||||
<a-input v-model="options.git_static_deploy_domain" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="仓库:">
|
|
||||||
<a-input v-model="options.git_static_deploy_repository" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="分支:">
|
|
||||||
<a-input v-model="options.git_static_deploy_branch" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="仓库用户名:">
|
|
||||||
<a-input v-model="options.git_static_deploy_username" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="邮箱:">
|
|
||||||
<a-input v-model="options.git_static_deploy_email" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="Token:">
|
|
||||||
<a-input-password
|
|
||||||
v-model="options.git_static_deploy_token"
|
|
||||||
autocomplete="new-password"
|
|
||||||
/>
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="CNAME:">
|
|
||||||
<a-input v-model="options.git_static_deploy_cname" />
|
|
||||||
</a-form-item>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
id="netlifyForm"
|
|
||||||
v-show="options.static_deploy_type === 'NETLIFY'"
|
|
||||||
>
|
|
||||||
<a-form-item label="域名:">
|
|
||||||
<a-input v-model="options.netlify_static_deploy_domain" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="Site ID:">
|
|
||||||
<a-input v-model="options.netlify_static_deploy_site_id" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="Token:">
|
|
||||||
<a-input-password
|
|
||||||
v-model="options.netlify_static_deploy_token"
|
|
||||||
autocomplete="new-password"
|
|
||||||
/>
|
|
||||||
</a-form-item>
|
|
||||||
</div>
|
|
||||||
<a-form-item>
|
|
||||||
<a-button
|
|
||||||
type="primary"
|
|
||||||
@click="handleSaveOptions"
|
|
||||||
>保存</a-button>
|
|
||||||
</a-form-item>
|
|
||||||
</a-form>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import staticPageApi from '@/api/staticPage'
|
|
||||||
import optionApi from '@/api/option'
|
|
||||||
import { mapActions } from 'vuex'
|
|
||||||
export default {
|
|
||||||
name: 'DeploySettingsForm',
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
deployType: staticPageApi.deployType,
|
|
||||||
wrapperCol: {
|
|
||||||
xl: { span: 8 },
|
|
||||||
lg: { span: 8 },
|
|
||||||
sm: { span: 12 },
|
|
||||||
xs: { span: 24 }
|
|
||||||
},
|
|
||||||
options: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.loadFormOptions()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
...mapActions(['refreshOptionsCache']),
|
|
||||||
loadFormOptions() {
|
|
||||||
optionApi.listAll().then(response => {
|
|
||||||
this.options = response.data.data
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleSaveOptions() {
|
|
||||||
optionApi.save(this.options).then(response => {
|
|
||||||
this.loadFormOptions()
|
|
||||||
this.refreshOptionsCache()
|
|
||||||
this.$message.success('保存成功!')
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,10 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
SettingsForm
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: 'SettingsForm'
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,113 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="option-tab-wrapper">
|
|
||||||
<a-card
|
|
||||||
:bordered="false"
|
|
||||||
:bodyStyle="{ padding: 0 }"
|
|
||||||
>
|
|
||||||
<div class="table-operator">
|
|
||||||
<a-button
|
|
||||||
type="primary"
|
|
||||||
icon="reload"
|
|
||||||
@click="handleGenerate"
|
|
||||||
>生成</a-button>
|
|
||||||
<a-button
|
|
||||||
icon="cloud-upload"
|
|
||||||
@click="handleDeploy"
|
|
||||||
:loading="deployLoading"
|
|
||||||
:disabled="deployLoading"
|
|
||||||
>
|
|
||||||
部署
|
|
||||||
</a-button>
|
|
||||||
<a-button
|
|
||||||
icon="sync"
|
|
||||||
@click="loadStaticPageList"
|
|
||||||
:loading="loading"
|
|
||||||
:disabled="loading"
|
|
||||||
>
|
|
||||||
刷新
|
|
||||||
</a-button>
|
|
||||||
</div>
|
|
||||||
<div class="mt-4">
|
|
||||||
<a-table
|
|
||||||
:rowKey="record => record.id"
|
|
||||||
:columns="columns"
|
|
||||||
:dataSource="staticPages"
|
|
||||||
:pagination="false"
|
|
||||||
size="middle"
|
|
||||||
:loading="loading"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
slot="name"
|
|
||||||
slot-scope="name"
|
|
||||||
>
|
|
||||||
<ellipsis
|
|
||||||
:length="64"
|
|
||||||
tooltip
|
|
||||||
>
|
|
||||||
{{ name }}
|
|
||||||
</ellipsis>
|
|
||||||
</span>
|
|
||||||
</a-table>
|
|
||||||
</div>
|
|
||||||
</a-card>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import staticPageApi from '@/api/staticPage'
|
|
||||||
const columns = [
|
|
||||||
{
|
|
||||||
title: '文件名',
|
|
||||||
dataIndex: 'name',
|
|
||||||
scopedSlots: { customRender: 'name' }
|
|
||||||
}
|
|
||||||
]
|
|
||||||
export default {
|
|
||||||
name: 'StaticPagesList',
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
columns: columns,
|
|
||||||
staticPages: [],
|
|
||||||
loading: false,
|
|
||||||
deployLoading: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.loadStaticPageList()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
loadStaticPageList() {
|
|
||||||
this.loading = true
|
|
||||||
staticPageApi.list().then(response => {
|
|
||||||
this.staticPages = response.data.data
|
|
||||||
this.loading = false
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleGenerate() {
|
|
||||||
this.loading = true
|
|
||||||
const hide = this.$message.loading('生成中...', 0)
|
|
||||||
staticPageApi
|
|
||||||
.generate()
|
|
||||||
.then(response => {
|
|
||||||
this.$message.success('生成成功!')
|
|
||||||
})
|
|
||||||
.finally(response => {
|
|
||||||
this.loadStaticPageList()
|
|
||||||
hide()
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleDeploy() {
|
|
||||||
this.deployLoading = true
|
|
||||||
const hide = this.$message.loading('部署中...', 0)
|
|
||||||
staticPageApi
|
|
||||||
.deploy()
|
|
||||||
.then(response => {
|
|
||||||
this.$message.success('部署成功!')
|
|
||||||
})
|
|
||||||
.finally(response => {
|
|
||||||
this.deployLoading = false
|
|
||||||
hide()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
Loading…
Reference in New Issue