feat: 设置界面
parent
e701e1ffbb
commit
2d218c1463
|
@ -1815,16 +1815,6 @@
|
|||
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
|
||||
"dev": true
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"cacache": {
|
||||
"version": "13.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz",
|
||||
|
@ -1851,27 +1841,6 @@
|
|||
"unique-filename": "^1.1.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"
|
||||
}
|
||||
},
|
||||
"find-cache-dir": {
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
|
||||
|
@ -1893,18 +1862,6 @@
|
|||
"path-exists": "^4.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": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||
|
@ -1995,18 +1952,6 @@
|
|||
"webpack-sources": "^1.4.3"
|
||||
}
|
||||
},
|
||||
"vue-loader-v16": {
|
||||
"version": "npm:vue-loader@16.0.0-beta.9",
|
||||
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-beta.9.tgz",
|
||||
"integrity": "sha512-mu9pg6554GbXDSO8LlxkQM6qUJzUkb/A0FJc9LgRqnU9MCnhzEXwCt1Zx5NObvFpzs2mH2dH/uUCDwL8Qaz9sA==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"chalk": "^4.1.0",
|
||||
"hash-sum": "^2.0.0",
|
||||
"loader-utils": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
|
@ -12483,6 +12428,63 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"vue-loader-v16": {
|
||||
"version": "npm:vue-loader@16.0.0-beta.9",
|
||||
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-beta.9.tgz",
|
||||
"integrity": "sha512-mu9pg6554GbXDSO8LlxkQM6qUJzUkb/A0FJc9LgRqnU9MCnhzEXwCt1Zx5NObvFpzs2mH2dH/uUCDwL8Qaz9sA==",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"vue-style-loader": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz",
|
||||
|
|
|
@ -11,7 +11,7 @@ module.exports = {
|
|||
cafile: true,
|
||||
NODE_EXTRA_CA_CERTS: true,
|
||||
NODE_TLS_REJECT_UNAUTHORIZED: false,
|
||||
registry: 'http://registry.npmjs.org'// 可以选择切换官方或者淘宝镜像
|
||||
registry: 'https://registry.npmjs.org'// 可以选择切换官方或者淘宝镜像
|
||||
},
|
||||
intercepts: {
|
||||
'cdn.cypress.io': [{ regexp: '/desktop/.*', proxy: 'http://npm.taobao.org/mirrors/cypress/' }]
|
||||
|
|
|
@ -1,31 +1,31 @@
|
|||
const nodeConfig = require('./config')
|
||||
const NodePlugin = function (context) {
|
||||
const { config, shell, event, rootCaFile } = context
|
||||
const api = {
|
||||
const nodeApi = {
|
||||
async start () {
|
||||
try {
|
||||
await api.setVariables()
|
||||
await nodeApi.setVariables()
|
||||
} catch (err) {
|
||||
console.warn('set variables error', err)
|
||||
}
|
||||
|
||||
const ip = '127.0.0.1'
|
||||
const port = config.get().server.port
|
||||
await api.setProxy(ip, port)
|
||||
await nodeApi.setProxy(ip, port)
|
||||
return { ip, port }
|
||||
},
|
||||
|
||||
async close () {
|
||||
return api.unsetProxy()
|
||||
return nodeApi.unsetProxy()
|
||||
},
|
||||
|
||||
async restart () {
|
||||
await api.close()
|
||||
await api.start()
|
||||
await nodeApi.close()
|
||||
await nodeApi.start()
|
||||
},
|
||||
|
||||
async save (newConfig) {
|
||||
api.setVariables()
|
||||
nodeApi.setVariables()
|
||||
},
|
||||
async getNpmEnv () {
|
||||
const ret = await shell.exec(['npm config list --json'], { type: 'cmd' })
|
||||
|
@ -55,7 +55,7 @@ const NodePlugin = function (context) {
|
|||
},
|
||||
|
||||
async getVariables () {
|
||||
const currentMap = await api.getNpmEnv()
|
||||
const currentMap = await nodeApi.getNpmEnv()
|
||||
const list = []
|
||||
const map = config.get().plugin.node.variables
|
||||
for (const key in map) {
|
||||
|
@ -72,15 +72,21 @@ const NodePlugin = function (context) {
|
|||
},
|
||||
|
||||
async setVariables () {
|
||||
const list = await api.getVariables()
|
||||
const list = await nodeApi.getVariables()
|
||||
const noSetList = list.filter(item => {
|
||||
return !item.exists
|
||||
})
|
||||
if (noSetList.length > 0) {
|
||||
return api.setNpmEnv(noSetList)
|
||||
return nodeApi.setNpmEnv(noSetList)
|
||||
}
|
||||
},
|
||||
|
||||
async setRegistry (registry) {
|
||||
await nodeApi.setNpmEnv([{ key: 'registry', value: registry }])
|
||||
console.log(1111)
|
||||
return true
|
||||
},
|
||||
|
||||
async setProxy (ip, port) {
|
||||
const cmds = [
|
||||
`npm config set proxy=http://${ip}:${port}`,
|
||||
|
@ -135,7 +141,7 @@ const NodePlugin = function (context) {
|
|||
return ret
|
||||
}
|
||||
}
|
||||
return api
|
||||
return nodeApi
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
|
|
@ -2371,16 +2371,6 @@
|
|||
"integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
|
||||
"dev": true
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"cacache": {
|
||||
"version": "13.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz",
|
||||
|
@ -2407,34 +2397,6 @@
|
|||
"unique-filename": "^1.1.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
|
||||
},
|
||||
"find-cache-dir": {
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz",
|
||||
|
@ -2456,25 +2418,6 @@
|
|||
"path-exists": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz",
|
||||
|
@ -2539,16 +2482,6 @@
|
|||
"minipass": "^3.1.1"
|
||||
}
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"terser-webpack-plugin": {
|
||||
"version": "2.3.8",
|
||||
"resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.8.tgz?cache=0&sync_timestamp=1602701885709&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-2.3.8.tgz",
|
||||
|
@ -2565,18 +2498,6 @@
|
|||
"terser": "^4.6.12",
|
||||
"webpack-sources": "^1.4.3"
|
||||
}
|
||||
},
|
||||
"vue-loader-v16": {
|
||||
"version": "npm:vue-loader@16.0.0-beta.9",
|
||||
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-beta.9.tgz",
|
||||
"integrity": "sha512-mu9pg6554GbXDSO8LlxkQM6qUJzUkb/A0FJc9LgRqnU9MCnhzEXwCt1Zx5NObvFpzs2mH2dH/uUCDwL8Qaz9sA==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"chalk": "^4.1.0",
|
||||
"hash-sum": "^2.0.0",
|
||||
"loader-utils": "^2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -16440,6 +16361,87 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"vue-loader-v16": {
|
||||
"version": "npm:vue-loader@16.0.0-beta.9",
|
||||
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-beta.9.tgz",
|
||||
"integrity": "sha512-mu9pg6554GbXDSO8LlxkQM6qUJzUkb/A0FJc9LgRqnU9MCnhzEXwCt1Zx5NObvFpzs2mH2dH/uUCDwL8Qaz9sA==",
|
||||
"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-ref": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/vue-ref/download/vue-ref-2.0.0.tgz",
|
||||
|
|
|
@ -7,6 +7,7 @@ import { apiInit } from './view/api'
|
|||
import VueRouter from 'vue-router'
|
||||
import routes from './view/router'
|
||||
import DsContainer from './view/components/container'
|
||||
import './view/style/index.scss'
|
||||
Vue.config.productionTip = false
|
||||
Vue.use(antd)
|
||||
Vue.use(VueRouter)
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<a-menu
|
||||
mode="inline"
|
||||
:defaultSelectedKeys="[$route.fullPath]"
|
||||
:defaultOpenKeys="['/plugin']"
|
||||
>
|
||||
<template v-for="(item) of menus">
|
||||
<a-sub-menu v-if="item.children && item.children.length>0" :key="item.path" @titleClick="titleClick(item)">
|
||||
|
@ -56,9 +57,9 @@ export default {
|
|||
{ title: '系统代理', path: '/proxy' },
|
||||
{
|
||||
title: '应用',
|
||||
path: '/app',
|
||||
path: '/plugin',
|
||||
children: [
|
||||
{ title: 'NPM加速', path: '/app/node' }
|
||||
{ title: 'NPM加速', path: '/plugin/node' }
|
||||
]
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
<template>
|
||||
<div>node</div>
|
||||
</template>
|
|
@ -0,0 +1,104 @@
|
|||
<template>
|
||||
<ds-container>
|
||||
<template slot="header">
|
||||
NPM加速
|
||||
<span>
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<div v-if="config">
|
||||
<div>
|
||||
<a-form-item label="启用NPM加速插件" >
|
||||
<a-checkbox v-model="config.plugin.node.enabled" >
|
||||
自动开启NPM加速
|
||||
</a-checkbox>
|
||||
当前状态:
|
||||
<a-tag v-if="status.plugin.node.enabled" color="green">
|
||||
已启动
|
||||
</a-tag>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="切换registry" >
|
||||
<a-radio-group v-model="config.plugin.node.setting.registry" @change="onSwitchRegistry" default-value="https://registry.npmjs.org" button-style="solid">
|
||||
<a-radio-button value="https://registry.npmjs.org">
|
||||
npmjs
|
||||
</a-radio-button>
|
||||
<a-radio-button value="https://registry.npm.taobao.org">
|
||||
taobao
|
||||
</a-radio-button>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div>某些库需要自己设置镜像变量,才能下载,比如:electron</div>
|
||||
<a-row :gutter="10" style="margin-top: 10px" v-for="(item,index) of npmVariables" :key = 'index'>
|
||||
<a-col :span="10">
|
||||
<a-input :disabled="item.key ===false" v-model="item.key"></a-input>
|
||||
</a-col>
|
||||
<a-col :span="10">
|
||||
<a-input :disabled="item.value ===false" v-model="item.value"></a-input>
|
||||
</a-col>
|
||||
<a-col :span="4">
|
||||
<a-icon v-if="item.exists" style="color:green" type="check" />
|
||||
<a-icon v-if="!item.exists || !item.set" title="还未设置" style="color:red" type="exclamation-circle" />
|
||||
</a-col>
|
||||
</a-row>
|
||||
</div>
|
||||
</div>
|
||||
<template slot="footer">
|
||||
<div class="footer-bar">
|
||||
<a-button type="primary" @click="submit()">应用</a-button>
|
||||
</div>
|
||||
</template>
|
||||
</ds-container>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import DsContainer from '../../components/container'
|
||||
import api from '../../api'
|
||||
import status from '../../status'
|
||||
export default {
|
||||
name: 'Node',
|
||||
components: {
|
||||
DsContainer
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
config: undefined,
|
||||
status: status,
|
||||
npmVariables: undefined,
|
||||
registry: false
|
||||
}
|
||||
},
|
||||
created () {
|
||||
api.config.reload().then(ret => {
|
||||
this.config = ret
|
||||
})
|
||||
api.plugin.node.getVariables().then(ret => {
|
||||
this.npmVariables = ret
|
||||
})
|
||||
},
|
||||
mounted () {
|
||||
},
|
||||
methods: {
|
||||
|
||||
onSwitchRegistry (event) {
|
||||
return this.setRegistry(event.target.value).then(() => {
|
||||
this.$message.success('切换成功')
|
||||
})
|
||||
},
|
||||
setRegistry (registry) {
|
||||
return api.plugin.node.setRegistry(registry)
|
||||
},
|
||||
submit () {
|
||||
return api.config.set(this.config).then(() => {
|
||||
this.$message.success('设置已保存')
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="sass">
|
||||
</style>
|
|
@ -1,3 +1,62 @@
|
|||
<template>
|
||||
<div>proxy</div>
|
||||
<ds-container>
|
||||
<template slot="header">
|
||||
系统代理设置
|
||||
<span>
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<div v-if="config">
|
||||
<a-form-item label="启用系统代理" >
|
||||
<a-checkbox v-model="config.proxy.enabled" >
|
||||
自动开启系统代理
|
||||
</a-checkbox>
|
||||
当前状态:
|
||||
<a-tag v-if="status.plugin.node.enabled" color="green">
|
||||
已启动
|
||||
</a-tag>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<template slot="footer">
|
||||
<div class="footer-bar">
|
||||
<a-button type="primary" @click="submit()">应用</a-button>
|
||||
</div>
|
||||
</template>
|
||||
</ds-container>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import DsContainer from '../components/container'
|
||||
import api from '../api'
|
||||
import status from '../status'
|
||||
export default {
|
||||
name: 'Proxy',
|
||||
components: {
|
||||
DsContainer
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
config: undefined,
|
||||
status: status
|
||||
}
|
||||
},
|
||||
created () {
|
||||
api.config.reload().then(ret => {
|
||||
this.config = ret
|
||||
})
|
||||
},
|
||||
mounted () {
|
||||
},
|
||||
methods: {
|
||||
|
||||
submit () {
|
||||
api.config.set(this.config).then(() => {
|
||||
this.$message.info('设置已保存')
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="sass">
|
||||
</style>
|
||||
|
|
|
@ -1,3 +1,140 @@
|
|||
<template>
|
||||
<div>server</div>
|
||||
<ds-container>
|
||||
<template slot="header">
|
||||
系统代理设置
|
||||
<span>
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<div style="height: 100%" >
|
||||
|
||||
<a-tabs
|
||||
default-active-key="1"
|
||||
tab-position="left"
|
||||
:style="{ height: '100%' }"
|
||||
v-if="config"
|
||||
>
|
||||
<a-tab-pane tab="基本设置" key="1" >
|
||||
<a-form-item label="启用代理服务" >
|
||||
<a-checkbox :checked="config.server.enabled" @change="config.server.enabled = $event">
|
||||
自动开启代理服务
|
||||
</a-checkbox>
|
||||
当前状态:
|
||||
<a-tag v-if="status.plugin.node.enabled" color="green">
|
||||
已启动
|
||||
</a-tag>
|
||||
</a-form-item>
|
||||
<a-form-item label="代理端口" >
|
||||
<a-input v-model="config.server.port"/>
|
||||
</a-form-item>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane tab="拦截设置" key="2" >
|
||||
<vue-json-editor style="height:100%;" ref="editor" v-model="config.server.intercepts" mode="code" :show-btns="false" :expandedOnStart="true" @json-change="onJsonChange" ></vue-json-editor>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane tab="DNS设置" key="3">
|
||||
<div>
|
||||
<div>某些域名有时候需要通过其他DNS服务器获取到的IP才可以访问</div>
|
||||
<a-row style="margin-top:10px">
|
||||
<a-col>
|
||||
<a-button type="primary" icon="plus" @click="addDnsMapping()" />
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="10" style="margin-top: 10px" v-for="(item,index) of dnsMappings" :key = 'index'>
|
||||
<a-col :span="14">
|
||||
<a-input :disabled="item.value ===false" v-model="item.key"></a-input>
|
||||
</a-col>
|
||||
<a-col :span="5">
|
||||
<a-select :disabled="item.value ===false" v-model="item.value">
|
||||
<a-select-option value="usa">USA DNS</a-select-option>
|
||||
<a-select-option value="aliyun">Aliyun DNS</a-select-option>
|
||||
</a-select>
|
||||
</a-col>
|
||||
<a-col :span="3">
|
||||
<a-button v-if="item.value!==false" style="margin-left:10px" type="danger" icon="minus" @click="deleteDnsMapping(item,index)" />
|
||||
<a-button v-if="item.value===false" style="margin-left:10px" type="primary" icon="checked" @click="restoreDefDnsMapping(item,index)" ></a-button>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</div>
|
||||
<template slot="footer">
|
||||
<div class="footer-bar">
|
||||
<a-button type="primary" @click="submit()">应用</a-button>
|
||||
</div>
|
||||
</template>
|
||||
</ds-container>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import vueJsonEditor from 'vue-json-editor'
|
||||
import DsContainer from '../components/container'
|
||||
import api from '../api'
|
||||
import status from '../status'
|
||||
export default {
|
||||
name: 'Server',
|
||||
components: {
|
||||
DsContainer, vueJsonEditor
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
config: undefined,
|
||||
status: status,
|
||||
dnsMappings: []
|
||||
}
|
||||
},
|
||||
created () {
|
||||
api.config.reload().then(ret => {
|
||||
this.config = ret
|
||||
this.dnsMappings = []
|
||||
for (const key in this.config.server.dns.mapping) {
|
||||
const value = this.config.server.dns.mapping[key]
|
||||
this.dnsMappings.push({
|
||||
key, value
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
mounted () {
|
||||
},
|
||||
methods: {
|
||||
onJsonChange (json) {
|
||||
},
|
||||
submit () {
|
||||
api.config.set(this.config).then(() => {
|
||||
this.$message.info('设置已保存')
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.json-wrapper {
|
||||
.ant-drawer-wrapper-body{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.ant-drawer-body{
|
||||
flex: 1;
|
||||
height: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.jsoneditor-vue{
|
||||
height:100%
|
||||
}
|
||||
.ant-tabs{
|
||||
height: 100%;
|
||||
}
|
||||
.ant-tabs-content{
|
||||
height: 100%;
|
||||
}
|
||||
.ant-tabs-tabpane-active{
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
import Index from '../pages/index'
|
||||
import Server from '../pages/server'
|
||||
import Proxy from '../pages/proxy'
|
||||
import Node from '../pages/app/node'
|
||||
import Node from '../pages/plugin/node'
|
||||
|
||||
const routes = [
|
||||
{ path: '/', redirect: '/index' },
|
||||
{ path: '/index', component: Index },
|
||||
{ path: '/server', component: Server },
|
||||
{ path: '/proxy', component: Proxy },
|
||||
{ path: '/app/node', component: Node }
|
||||
{ path: '/plugin/node', component: Node }
|
||||
|
||||
]
|
||||
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
const status = {
|
||||
server: false,
|
||||
server: {
|
||||
enabled: false
|
||||
},
|
||||
proxy: {
|
||||
system: false,
|
||||
npm: false
|
||||
enabled: false
|
||||
},
|
||||
plugin: {
|
||||
node: {}
|
||||
}
|
||||
}
|
||||
export default status
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
.footer-bar{
|
||||
padding:10px;
|
||||
text-align: right;
|
||||
border-top:#eee 1px solid;
|
||||
}
|
Loading…
Reference in New Issue