浏览代码

use electron-builder

oldj 6 年之前
父节点
当前提交
25ca2e2cbb

+ 2 - 2
app-ui/about/About.jsx

@@ -9,7 +9,7 @@ import React from 'react'
 import { Modal, Button } from 'antd'
 import Agent from '../Agent'
 import logo from '../../app/assets/[email protected]'
-import { version } from '../../app/version'
+import version from '../../app/version'
 import styles from './About.less'
 
 export default class About extends React.Component {
@@ -65,7 +65,7 @@ export default class About extends React.Component {
     return (
       <Modal
         visible={this.state.visible}
-        width="360"
+        width={360}
         onCancel={this.hide.bind(this)}
         wrapClassName="frame"
         closable={false}

+ 2 - 2
app-ui/about/About.less

@@ -10,8 +10,8 @@
 
 .content {
   text-align: center;
-  width: 60%;
-  margin: 0 auto;
+  //width: 60%;
+  //margin: 0 auto;
   font-size: 12px;
   white-space: normal;
 

+ 2 - 2
app-ui/frame/PreferencesPrompt.jsx

@@ -11,7 +11,7 @@ import { Checkbox, Input, Radio, Select, Tabs } from 'antd'
 import MyFrame from './MyFrame'
 import classnames from 'classnames'
 import Agent from '../Agent'
-import { version as current_version } from '../../app/version'
+import version from '../../app/version'
 import formatVersion from '../../app/libs/formatVersion'
 import CodeMirror from 'react-codemirror'
 import 'codemirror/mode/shell/shell'
@@ -255,7 +255,7 @@ export default class PreferencesPrompt extends React.Component {
           <a
             href="#"
             onClick={PreferencesPrompt.openDownloadPage}
-          >{formatVersion(current_version)}</a>
+          >{formatVersion(version)}</a>
         </div>
         <Tabs
           defaultActiveKey="1"

+ 1 - 1
app/configs.js

@@ -5,7 +5,7 @@
 
 'use strict'
 
-const m_ver = require('./version').version
+const m_ver = require('./version')
 
 module.exports = {
   PORT: 50761,

+ 0 - 0
app/libs/chrome-dns-clear → app/libs/chrome-dns-clear.js


+ 1 - 1
app/menu/main_menu.js

@@ -12,7 +12,7 @@ const m_lang = require('../server/lang')
 const getPref = require('../server/actions/getPref')
 const checkUpdate = require('../server/checkUpdate')
 const svr = require('../server/svr')
-const version = require('../version').version
+const version = require('../version')
 
 function doInit (app, lang) {
   let last_path = null

+ 1 - 1
app/menu/tray.js

@@ -14,7 +14,7 @@ const checkUpdate = require('../server/checkUpdate')
 const pref = require('../server/pref')
 const setPref = require('../server/actions/setPref')
 const os = process.platform
-const current_version = require('../version').version
+const current_version = require('../version')
 const svr = require('../server/svr')
 const formatVersion = require('../libs/formatVersion')
 const getUserHosts = require('../server/actions/getUserHosts')

+ 1 - 1
app/server/actions/exportData.js

@@ -7,7 +7,7 @@
 
 const paths = require('../paths')
 const io = require('../io')
-const version = require('../../version').version
+const version = require('../../version')
 
 module.exports = (svr, fn) => {
   let data_path = paths.data_path

+ 1 - 1
app/server/actions/importData.js

@@ -7,7 +7,7 @@
 
 const paths = require('../paths')
 const io = require('../io')
-const version = require('../../version').version
+const version = require('../../version')
 const saveHosts = require('./saveHosts')
 
 module.exports = (svr, fn) => {

+ 1 - 1
app/server/actions/saveHosts.js

@@ -5,7 +5,7 @@
 
 'use strict'
 
-const version = require('../../version').version
+const version = require('../../version')
 const paths = require('../paths')
 const io = require('../io')
 const jsbeautify = require('js-beautify').js_beautify

+ 1 - 1
app/server/apply.js

@@ -19,7 +19,7 @@ const md5File = require('md5-file')
 const applyAfter_Unix = require('./applyAfter_Unix')
 const platform = process.platform
 const svr = require('./svr')
-//const version = require('../version').version.join('.')
+//const version = require('../version').join('.')
 
 let sudo_pswd = ''
 let lang = null

+ 1 - 1
app/server/checkUpdate.js

@@ -8,7 +8,7 @@
 const request = require('request')
 const cheerio = require('cheerio')
 const {shell, dialog} = require('electron')
-const current_version = require('../version').version
+const current_version = require('../version')
 const m_lang = require('../server/lang')
 const lang = m_lang.getLang(global.user_language)
 const svr = require('./svr')

+ 1 - 1
app/server/initWorkPath.js

@@ -7,7 +7,7 @@
 
 const fs = require('fs')
 const path = require('path')
-const version = require('../version').version
+const version = require('../version')
 
 module.exports = (work_path, sys_hosts_path) => {
   fs.mkdirSync(work_path)

文件差异内容过多而无法显示
+ 0 - 0
app/ui/app.css


文件差异内容过多而无法显示
+ 0 - 0
app/ui/app.js


+ 1 - 1
app/version.js

@@ -1 +1 @@
-exports.version = [3, 3, 13, 5392]
+module.exports = [3, 3, 13, 5396]

+ 4 - 4
gulpfile.js

@@ -29,12 +29,12 @@ const args = require('yargs').argv
 
 gulp.task('ver', (done) => {
   let fn = path.join(__dirname, 'app', 'version.js')
-  let version = require('./app/version').version
+  let version = require('./app/version')
   version[3]++
 
   console.log(`version -> ${version.join('.')}`)
 
-  let cnt = `exports.version = [${version.join(', ')}]`
+  let cnt = `module.exports = [${version.join(', ')}]`
   fs.writeFileSync(fn, cnt, 'utf-8')
 
   function updatePackage (fn) {
@@ -53,7 +53,7 @@ gulp.task('ver', (done) => {
 })
 
 gulp.task('pack', (done) => {
-  let version = require('./app/version').version
+  let version = require('./app/version')
   let v1 = version.slice(0, 3).join('.')
   let v2 = version[3]
 
@@ -98,7 +98,7 @@ electron-packager ./app 'SwitchHosts!' --platform=linux  --arch=x64 --electron-v
 })
 
 gulp.task('zip', (done) => {
-  let version = require('./app/version').version
+  let version = require('./app/version')
   let v = version.join('.')
 
   let cmds = `

+ 375 - 103
package-lock.json

@@ -4,6 +4,12 @@
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
+    "7zip-bin": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-4.1.0.tgz",
+      "integrity": "sha512-AsnBZN3a8/JcNt+KPkGGODaA4c7l3W5+WpeKgGSbstSLxqWtTXqd1ieJGBQ8IFCtRg8DmmKUcSkIkUc0A4p3YA==",
+      "dev": true
+    },
     "@ant-design/colors": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-3.1.0.tgz",
@@ -1851,62 +1857,6 @@
         }
       }
     },
-    "@electron/get": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.3.1.tgz",
-      "integrity": "sha512-FozkPRcRbHmuXh/qnry+s/GJ84hRAaUuEYYfZHvEl8n9X7a4ndhh1tVF+w4gky69XP+KHlLEO+OR95WqDy2mfg==",
-      "dev": true,
-      "requires": {
-        "debug": "^4.1.1",
-        "env-paths": "^2.2.0",
-        "fs-extra": "^7.0.1",
-        "got": "^9.6.0",
-        "sumchecker": "^3.0.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "env-paths": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz",
-          "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==",
-          "dev": true
-        },
-        "fs-extra": {
-          "version": "7.0.1",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
-          "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.2",
-            "jsonfile": "^4.0.0",
-            "universalify": "^0.1.0"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-          "dev": true
-        },
-        "sumchecker": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.0.tgz",
-          "integrity": "sha512-yreseuC/z4iaodVoq07XULEOO9p4jnQazO7mbrnDSvWAU/y2cbyIKs+gWJptfcGu9R+1l27K8Rkj0bfvqnBpgQ==",
-          "dev": true,
-          "requires": {
-            "debug": "^4.1.0"
-          }
-        }
-      }
-    },
     "@mrmlnc/readdir-enhanced": {
       "version": "2.2.1",
       "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
@@ -2076,6 +2026,12 @@
         "defer-to-connect": "^1.0.1"
       }
     },
+    "@types/debug": {
+      "version": "4.1.4",
+      "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.4.tgz",
+      "integrity": "sha512-D9MyoQFI7iP5VdpEyPZyjjqIJ8Y8EDNQFIFVLOmeg1rI1xiHOChyUPMPRUVfqFCerxfE+yS3vMyj37F6IdtOoQ==",
+      "dev": true
+    },
     "@types/events": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
@@ -2579,6 +2535,73 @@
         }
       }
     },
+    "app-builder-bin": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.7.1.tgz",
+      "integrity": "sha512-ubIBeiL9XysjMW4HETBKxj3DC8ika6dGyC0vftPc0kZwGh1iXQ5bycsjoAqY/3t3BBEEIg0VruicvBaUl1pOSQ==",
+      "dev": true
+    },
+    "app-builder-lib": {
+      "version": "20.44.4",
+      "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.44.4.tgz",
+      "integrity": "sha512-1K1xfrhyqDgnibwyuYMgvfwGilGLMF31YwOUJ8IXreyjRef9lUjWW+BZuBXqk4Uqd0C0EYPjhofgpuN0WoAQ+A==",
+      "dev": true,
+      "requires": {
+        "7zip-bin": "~4.1.0",
+        "app-builder-bin": "2.7.1",
+        "async-exit-hook": "^2.0.1",
+        "bluebird-lst": "^1.0.9",
+        "builder-util": "10.1.2",
+        "builder-util-runtime": "8.2.5",
+        "chromium-pickle-js": "^0.2.0",
+        "debug": "^4.1.1",
+        "ejs": "^2.6.2",
+        "electron-osx-sign": "0.4.11",
+        "electron-publish": "20.44.4",
+        "fs-extra-p": "^8.0.2",
+        "hosted-git-info": "^2.7.1",
+        "is-ci": "^2.0.0",
+        "isbinaryfile": "^4.0.1",
+        "js-yaml": "^3.13.1",
+        "lazy-val": "^1.0.4",
+        "minimatch": "^3.0.4",
+        "normalize-package-data": "^2.5.0",
+        "plist": "^3.0.1",
+        "read-config-file": "3.2.2",
+        "sanitize-filename": "^1.6.1",
+        "semver": "^6.1.1",
+        "temp-file": "^3.3.3"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ejs": {
+          "version": "2.6.2",
+          "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz",
+          "integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==",
+          "dev": true
+        },
+        "isbinaryfile": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.1.tgz",
+          "integrity": "sha512-bvJxbNWm72dy/1+qeBm9F8wUM4siDnlzid7NN5Ib4nQcc0tNIx/YWgEih1ZRHXr8xVbpGk1ccLlA9gOSlyx3gw==",
+          "dev": true
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
     "append-buffer": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
@@ -2818,17 +2841,18 @@
       "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
     },
     "asar": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/asar/-/asar-2.0.1.tgz",
-      "integrity": "sha512-Vo9yTuUtyFahkVMFaI6uMuX6N7k5DWa6a/8+7ov0/f8Lq9TVR0tUjzSzxQSxT1Y+RJIZgnP7BVb6Uhi+9cjxqA==",
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/asar/-/asar-1.0.0.tgz",
+      "integrity": "sha512-MBiDU5cDr9UWuY2F0zq2fZlnyRq1aOPmJGMas22Qa14K1odpRXL3xkMHPN3uw2hAK5mD89Q+/KidOUtpi4V0Cg==",
       "dev": true,
       "requires": {
         "chromium-pickle-js": "^0.2.0",
-        "commander": "^2.20.0",
+        "commander": "^2.19.0",
         "cuint": "^0.2.2",
         "glob": "^7.1.3",
         "minimatch": "^3.0.4",
         "mkdirp": "^0.5.1",
+        "pify": "^4.0.1",
         "tmp-promise": "^1.0.5"
       }
     },
@@ -2924,6 +2948,12 @@
       "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
       "dev": true
     },
+    "async-exit-hook": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
+      "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==",
+      "dev": true
+    },
     "async-limiter": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
@@ -3790,6 +3820,15 @@
       "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==",
       "dev": true
     },
+    "bluebird-lst": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz",
+      "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.5"
+      }
+    },
     "bn.js": {
       "version": "4.11.8",
       "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
@@ -4046,6 +4085,73 @@
       "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
       "dev": true
     },
+    "builder-util": {
+      "version": "10.1.2",
+      "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-10.1.2.tgz",
+      "integrity": "sha512-LQMh36Cg0r4ZfKqNlaUclndS/IXxZ3OdCgmXvw1vdP3QwYT2NkyE7LfMikAFIHpXOs6zsVH+iW+Fe/AX1jfFag==",
+      "dev": true,
+      "requires": {
+        "7zip-bin": "~4.1.0",
+        "@types/debug": "^4.1.4",
+        "app-builder-bin": "2.7.1",
+        "bluebird-lst": "^1.0.9",
+        "builder-util-runtime": "^8.2.5",
+        "chalk": "^2.4.2",
+        "debug": "^4.1.1",
+        "fs-extra-p": "^8.0.2",
+        "is-ci": "^2.0.0",
+        "js-yaml": "^3.13.1",
+        "source-map-support": "^0.5.12",
+        "stat-mode": "^0.3.0",
+        "temp-file": "^3.3.3"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
+    "builder-util-runtime": {
+      "version": "8.2.5",
+      "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.2.5.tgz",
+      "integrity": "sha512-YILT+YUlxrE3yNB6mDC1tF+Q24mr1LSYdjP5U861jbBeDZfvy1/VPDzW3boMVrDtzYnDnvkYrzLJnoh6TXA75w==",
+      "dev": true,
+      "requires": {
+        "bluebird-lst": "^1.0.9",
+        "debug": "^4.1.1",
+        "fs-extra-p": "^8.0.2",
+        "sax": "^1.2.4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
     "builtin-status-codes": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
@@ -5398,15 +5504,6 @@
         "which": "^1.2.9"
       }
     },
-    "cross-zip": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/cross-zip/-/cross-zip-2.1.5.tgz",
-      "integrity": "sha1-xdGgaksaEqAzBk+UbrWubUvc8+E=",
-      "dev": true,
-      "requires": {
-        "rimraf": "^2.5.2"
-      }
-    },
     "crypto-browserify": {
       "version": "3.12.0",
       "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
@@ -6049,6 +6146,22 @@
         "path-type": "^3.0.0"
       }
     },
+    "dmg-builder": {
+      "version": "6.7.2",
+      "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.7.2.tgz",
+      "integrity": "sha512-xfYOwhHjOSOIqkk8A0h8zcaio/WyzrAWpMTu9hzV3Z5PI4tOG0Pq6a9Lh/mHr1r3bydif8R21qGvKU1Re9CpUg==",
+      "dev": true,
+      "requires": {
+        "app-builder-lib": "~20.44.4",
+        "bluebird-lst": "^1.0.9",
+        "builder-util": "~10.1.2",
+        "fs-extra-p": "^8.0.2",
+        "iconv-lite": "^0.4.24",
+        "js-yaml": "^3.13.1",
+        "parse-color": "^1.0.0",
+        "sanitize-filename": "^1.6.1"
+      }
+    },
     "doctrine": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
@@ -6140,6 +6253,18 @@
         "is-obj": "^2.0.0"
       }
     },
+    "dotenv": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz",
+      "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==",
+      "dev": true
+    },
+    "dotenv-expand": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz",
+      "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=",
+      "dev": true
+    },
     "draft-js": {
       "version": "0.10.5",
       "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.10.5.tgz",
@@ -6245,6 +6370,27 @@
         }
       }
     },
+    "electron-builder": {
+      "version": "20.44.4",
+      "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.44.4.tgz",
+      "integrity": "sha512-H8zzP01albkKh2Ec1zc0A7RGriUkHb5M99NJskaYtgKtGATTAGH+r9OIWVk5Hk9c1dLMVudbqEeaSlygMF2asw==",
+      "dev": true,
+      "requires": {
+        "app-builder-lib": "20.44.4",
+        "bluebird-lst": "^1.0.9",
+        "builder-util": "10.1.2",
+        "builder-util-runtime": "8.2.5",
+        "chalk": "^2.4.2",
+        "dmg-builder": "6.7.2",
+        "fs-extra-p": "^8.0.2",
+        "is-ci": "^2.0.0",
+        "lazy-val": "^1.0.4",
+        "read-config-file": "3.2.2",
+        "sanitize-filename": "^1.6.1",
+        "update-notifier": "^3.0.0",
+        "yargs": "^13.2.4"
+      }
+    },
     "electron-chromedriver": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/electron-chromedriver/-/electron-chromedriver-5.0.1.tgz",
@@ -6302,13 +6448,13 @@
       }
     },
     "electron-notarize": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.1.1.tgz",
-      "integrity": "sha512-TpKfJcz4LXl5jiGvZTs5fbEx+wUFXV5u8voeG5WCHWfY/cdgdD8lDZIZRqLVOtR3VO+drgJ9aiSHIO9TYn/fKg==",
+      "version": "0.0.5",
+      "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.0.5.tgz",
+      "integrity": "sha512-YzrqZ6RDQ7Wt2RWlxzRoQUuxnTeXrfp7laH7XKcmQqrZ6GaAr50DMPvFMpqDKdrZSHSbcgZgB7ktIQbjvITmCQ==",
       "dev": true,
       "requires": {
-        "debug": "^4.1.1",
-        "fs-extra": "^8.0.1"
+        "debug": "^4.1.0",
+        "fs-extra": "^7.0.0"
       },
       "dependencies": {
         "debug": {
@@ -6321,22 +6467,16 @@
           }
         },
         "fs-extra": {
-          "version": "8.1.0",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
-          "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+          "version": "7.0.1",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+          "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
           "dev": true,
           "requires": {
-            "graceful-fs": "^4.2.0",
+            "graceful-fs": "^4.1.2",
             "jsonfile": "^4.0.0",
             "universalify": "^0.1.0"
           }
         },
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
         "ms": {
           "version": "2.1.2",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -6368,27 +6508,27 @@
       }
     },
     "electron-packager": {
-      "version": "14.0.0",
-      "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-14.0.0.tgz",
-      "integrity": "sha512-7GmpTAvMx9OR1/AZfcEmreVszMM0d64nzDyzzQytrjejZqygRyXOlRrQlR/TkLfymx9vZ5BHyo3KXokImdhhvA==",
+      "version": "13.1.1",
+      "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-13.1.1.tgz",
+      "integrity": "sha512-3Drgcw8OEOP3Psw/PprloAFJSkSUSQgjUq3AmWffJGB3Kj5WXmZl6A3GOUs8aT7bP/8GWg4oYqSiCSnA5PQkdQ==",
       "dev": true,
       "requires": {
-        "@electron/get": "^1.3.0",
-        "asar": "^2.0.1",
-        "cross-zip": "^2.1.5",
+        "asar": "^1.0.0",
         "debug": "^4.0.1",
-        "electron-notarize": "^0.1.1",
+        "electron-download": "^4.1.1",
+        "electron-notarize": "^0.0.5",
         "electron-osx-sign": "^0.4.11",
+        "extract-zip": "^1.0.3",
         "fs-extra": "^7.0.0",
         "galactus": "^0.2.1",
         "get-package-info": "^1.0.0",
-        "junk": "^3.1.0",
         "parse-author": "^2.0.0",
+        "pify": "^4.0.0",
         "plist": "^3.0.0",
-        "rcedit": "^2.0.0",
+        "rcedit": "^1.0.0",
         "resolve": "^1.1.6",
         "sanitize-filename": "^1.6.0",
-        "semver": "^6.0.0",
+        "semver": "^5.3.0",
         "yargs-parser": "^13.0.0"
       },
       "dependencies": {
@@ -6418,6 +6558,12 @@
           "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
           "dev": true
         },
+        "semver": {
+          "version": "5.7.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+          "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+          "dev": true
+        },
         "yargs-parser": {
           "version": "13.1.1",
           "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
@@ -6430,6 +6576,29 @@
         }
       }
     },
+    "electron-publish": {
+      "version": "20.44.4",
+      "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.44.4.tgz",
+      "integrity": "sha512-50NzsKOnNqOpGJzPl04vMyitdguUvp15FWKWtu4KISsHfgdLMWGgxHGZwfMphc/vf364zXvPHsYQza3MASgaEQ==",
+      "dev": true,
+      "requires": {
+        "bluebird-lst": "^1.0.9",
+        "builder-util": "~10.1.2",
+        "builder-util-runtime": "^8.2.5",
+        "chalk": "^2.4.2",
+        "fs-extra-p": "^8.0.2",
+        "lazy-val": "^1.0.4",
+        "mime": "^2.4.4"
+      },
+      "dependencies": {
+        "mime": {
+          "version": "2.4.4",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
+          "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
+          "dev": true
+        }
+      }
+    },
     "electron-to-chromium": {
       "version": "1.3.180",
       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.180.tgz",
@@ -7705,6 +7874,35 @@
         "universalify": "^0.1.0"
       }
     },
+    "fs-extra-p": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-8.1.0.tgz",
+      "integrity": "sha512-sCLpU5kk5CvrWZvFM9dUlqPgHrE02AEt6XYzF7kDscr5COc7DHfhNfODTXt0bkVNmt5DkvU2uJSYjorxY3bRKA==",
+      "dev": true,
+      "requires": {
+        "bluebird-lst": "^1.0.9",
+        "fs-extra": "^8.1.0"
+      },
+      "dependencies": {
+        "fs-extra": {
+          "version": "8.1.0",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+          "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        },
+        "graceful-fs": {
+          "version": "4.2.0",
+          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
+          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
+          "dev": true
+        }
+      }
+    },
     "fs-mkdirp-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
@@ -10237,12 +10435,6 @@
         "object.assign": "^4.1.0"
       }
     },
-    "junk": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz",
-      "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==",
-      "dev": true
-    },
     "just-debounce": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz",
@@ -10299,6 +10491,12 @@
       "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
       "dev": true
     },
+    "lazy-val": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz",
+      "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==",
+      "dev": true
+    },
     "lazystream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
@@ -12099,6 +12297,23 @@
         "author-regex": "^1.0.0"
       }
     },
+    "parse-color": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz",
+      "integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=",
+      "dev": true,
+      "requires": {
+        "color-convert": "~0.5.0"
+      },
+      "dependencies": {
+        "color-convert": {
+          "version": "0.5.3",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz",
+          "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=",
+          "dev": true
+        }
+      }
+    },
     "parse-filepath": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
@@ -13935,9 +14150,9 @@
       }
     },
     "rcedit": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-2.0.0.tgz",
-      "integrity": "sha512-XcFGyEBjhWSsud+R8elwQtGBbVkCf7tAiad+nXo5jc6l2rMf46NfGNwjnmBNneBIZDfq+Npf8lwP371JTONfrw==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-1.1.2.tgz",
+      "integrity": "sha512-z2ypB4gbINhI6wVe0JJMmdpmOpmNc4g90sE6/6JSuch5kYnjfz9CxvVPqqhShgR6GIkmtW3W2UlfiXhWljA0Fw==",
       "dev": true
     },
     "react": {
@@ -14008,6 +14223,46 @@
         "resize-observer-polyfill": "^1.5.0"
       }
     },
+    "read-config-file": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.2.2.tgz",
+      "integrity": "sha512-PuFpMgZF01VB0ydH1dfitAxCP/fh+qnfbA9cYNIPoxPbz0SMngsrafCtaHDWfER7MwlDz4fmrNBhPkakxxFpTg==",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.9.2",
+        "ajv-keywords": "^3.4.0",
+        "bluebird-lst": "^1.0.7",
+        "dotenv": "^6.2.0",
+        "dotenv-expand": "^4.2.0",
+        "fs-extra-p": "^7.0.1",
+        "js-yaml": "^3.12.1",
+        "json5": "^2.1.0",
+        "lazy-val": "^1.0.4"
+      },
+      "dependencies": {
+        "fs-extra": {
+          "version": "7.0.1",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+          "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        },
+        "fs-extra-p": {
+          "version": "7.0.1",
+          "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-7.0.1.tgz",
+          "integrity": "sha512-yhd2OV0HnHt2oitlp+X9hl2ReX4X/7kQeL7/72qzPHTZj5eUPGzAKOvEglU02Fa1OeG2rSy/aKB4WGVaLiF8tw==",
+          "dev": true,
+          "requires": {
+            "bluebird-lst": "^1.0.7",
+            "fs-extra": "^7.0.1"
+          }
+        }
+      }
+    },
     "read-pkg": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
@@ -15257,6 +15512,12 @@
       "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==",
       "dev": true
     },
+    "stat-mode": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.3.0.tgz",
+      "integrity": "sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==",
+      "dev": true
+    },
     "static-extend": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
@@ -15631,6 +15892,17 @@
         "xtend": "^4.0.0"
       }
     },
+    "temp-file": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.3.tgz",
+      "integrity": "sha512-ErWJ0vfZwkozaH7dn/5QtYdrGwy6fWID0GG3PEzNb9Vmt6urL4mQ3lKz7NWVi1/kmZsWQzgjTL7/P4mwGx5jqg==",
+      "dev": true,
+      "requires": {
+        "async-exit-hook": "^2.0.1",
+        "bluebird-lst": "^1.0.9",
+        "fs-extra-p": "^8.0.2"
+      }
+    },
     "term-size": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",

+ 3 - 9
package.json

@@ -1,10 +1,9 @@
 {
   "name": "switchhosts",
   "version": "3.3.13",
-  "description": "Homepage: [https://oldj.github.io/SwitchHosts/](https://oldj.github.io/SwitchHosts/)",
+  "description": "A tool for managing and switching hosts.",
   "main": "",
   "scripts": {
-    "_ln": "./scripts/ln.sh",
     "test": "nyc ava",
     "start": "electron app",
     "dll": "webpack --config scripts/webpack.dll.js --progress --profile --colors",
@@ -12,12 +11,7 @@
     "build": "gulp ver && npm run dll && npm run build2",
     "build2": "webpack --config scripts/webpack.config.js --progress --profile --colors",
     "w": "npm run build2 -- -w",
-    "pack": "gulp pack",
-    "pack-mac": "gulp pack --platform=macOS",
-    "pack-win": "gulp pack --platform=win64",
-    "pack-win32": "gulp pack --platform=win32",
-    "zip": "gulp zip",
-    "make": "gulp pack && gulp zip",
+    "make": "rm -rf dist/* && node scripts/make.js",
     "build-and-make": "npm run build && npm run make"
   },
   "repository": {
@@ -79,7 +73,7 @@
     "cross-env": "^5.2.0",
     "css-loader": "^3.0.0",
     "electron": "^5.0.6",
-    "electron-packager": "^14.0.0",
+    "electron-builder": "^20.44.4",
     "eslint": "^6.0.1",
     "eslint-config-standard": "^12.0.0",
     "eslint-friendly-formatter": "^4.0.1",

+ 85 - 0
scripts/make.js

@@ -0,0 +1,85 @@
+/**
+ * build
+ * @author: oldj
+ * @homepage: https://oldj.net
+ */
+
+const path = require('path')
+const builder = require('electron-builder')
+const homedir = require('os').homedir()
+const moment = require('moment')
+//const Platform = builder.Platform
+const version = require('../app/version')
+//const dist_dir = path.normalize(path.join(__dirname, '..', 'dist'))
+
+const cfg_common = {
+  appId: 'SwitchHosts',
+  productName: 'SwitchHosts!',
+  copyright: moment().format('Y'),
+  buildVersion: version[3],
+  directories: {
+    buildResources: 'app',
+    app: 'app'
+  },
+  electronDownload: {
+    cache: path.join(homedir, '.electron'),
+    mirror: 'https://npm.taobao.org/mirrors/electron/'
+  }
+}
+
+const makeApp = async () => {
+  await builder.build({
+    //targets: Platform.MAC.createTarget(),
+    mac: ['default'], // ['default', 'mas'],
+    win: ['nsis:ia32', 'nsis:x64', 'portable:ia32'],
+    linux: ['tar.gz:ia32', 'tar.gz:x64'],
+    config: {
+      ...cfg_common,
+      mac: {
+        category: 'public.app-category.productivity',
+        icon: 'assets/app.icns',
+        gatekeeperAssess: false,
+        identity: 'oldj',
+        artifactName: '${productName}_macOS_${version}(${buildVersion}).${ext}'
+      },
+      dmg: {
+        backgroundColor: '#f1f1f6',
+        //background: 'assets/dmg-bg.png',
+        //icon: 'assets/dmg-icon.icns',
+        iconSize: 160,
+        window: {
+          width: 600,
+          height: 420
+        },
+        contents: [{
+          x: 150,
+          y: 200
+        }, {
+          x: 450,
+          y: 200,
+          type: 'link',
+          path: '/Applications'
+        }],
+        artifactName: '${productName}_macOS_${version}(${buildVersion}).${ext}'
+      },
+      win: {
+        icon: 'assets/app.ico'
+      },
+      nsis: {
+        //installerIcon: 'assets/installer-icon.ico',
+        oneClick: false,
+        allowToChangeInstallationDirectory: true,
+        artifactName: '${productName}_Installer_${version}(${buildVersion}).${ext}'
+      },
+      portable: {
+        artifactName: '${productName}_Portable_${version}(${buildVersion}).${ext}'
+      }
+    }
+  })
+
+  console.log('done!')
+}
+
+(async () => {
+  await makeApp()
+})()

+ 1 - 1
scripts/webpack.config.js

@@ -13,7 +13,7 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin')
 const LESSPluginLists = require('less-plugin-lists')
 const TerserPlugin = require('terser-webpack-plugin')
 const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
-const version = require('../app/version').version.join('.')
+const version = require('../app/version').join('.')
 
 const mini_css_loader = {
   loader: MiniCssExtractPlugin.loader,

部分文件因为文件数量过多而无法显示