张恒

更新依赖,添加端口自适应

......@@ -9,6 +9,7 @@ const config = require('../config')
const webpack = require('webpack')
const WebpackDevServer = require('webpack-dev-server')
const webpackHotMiddleware = require('webpack-hot-middleware')
const Portfinder = require("portfinder")
const mainConfig = require('./webpack.main.config')
const rendererConfig = require('./webpack.renderer.config')
......@@ -60,40 +61,50 @@ function removeJunk(chunk) {
}
function startRenderer() {
return new Promise((resolve) => {
return new Promise((resolve, reject) => {
rendererConfig.mode = 'development'
const compiler = webpack(rendererConfig)
hotMiddleware = webpackHotMiddleware(compiler, {
log: false,
heartbeat: 2500
})
compiler.hooks.compilation.tap('compilation', compilation => {
compilation.hooks.htmlWebpackPluginAfterEmit.tapAsync('html-webpack-plugin-after-emit', (data, cb) => {
hotMiddleware.publish({ action: 'reload' })
cb()
})
})
compiler.hooks.done.tap('done', stats => {
logStats('Renderer', stats)
})
const server = new WebpackDevServer(
compiler,
{
contentBase: path.join(__dirname, '../'),
quiet: true,
before(app, ctx) {
app.use(hotMiddleware)
ctx.middleware.waitUntilValid(() => {
resolve()
Portfinder.basePort = config.dev.port || 9080
Portfinder.getPort((err, port) => {
if (err) {
reject("PortError:" + err)
} else {
const compiler = webpack(rendererConfig)
hotMiddleware = webpackHotMiddleware(compiler, {
log: false,
heartbeat: 2500
})
compiler.hooks.compilation.tap('compilation', compilation => {
compilation.hooks.htmlWebpackPluginAfterEmit.tapAsync('html-webpack-plugin-after-emit', (data, cb) => {
hotMiddleware.publish({ action: 'reload' })
cb()
})
}
})
compiler.hooks.done.tap('done', stats => {
logStats('Renderer', stats)
})
const server = new WebpackDevServer(
compiler,
{
contentBase: path.join(__dirname, '../'),
quiet: true,
before(app, ctx) {
app.use(hotMiddleware)
ctx.middleware.waitUntilValid(() => {
resolve()
})
}
}
)
process.env.PORT = port
server.listen(port)
}
)
})
server.listen(9080)
})
}
......@@ -197,16 +208,15 @@ function greeting() {
console.log(chalk.blue(' getting ready...') + '\n')
}
function init() {
async function init() {
greeting()
Promise.all([startRenderer(), startMain()])
.then(() => {
startElectron()
})
.catch(err => {
console.error(err)
})
try {
await startRenderer()
await startMain()
await startElectron()
} catch (error) {
console.error(error)
}
}
init()
......
......@@ -42,6 +42,7 @@ npm config edit
这是花裤衩大大原本的[地址](https://github.com/PanJiaChen/electron-vue-admin)
# 更新日志
- 2020年01月09日更新:例行更新依赖,在dev中加入了端口监听检测,如果9080端口被占用就会自动向后开启一个端口号并使用,同时在config/index.js的dev中加入了端口设置,可以快捷设置端口号而不用去更改webpack的配置了。
- 2019年12月18日更新:我在build文件夹内添加了windows的打包依赖,在打包爆错的话,可以尝试使用/build/lib内的压缩包,记得看使用说明哦~
- 2019年11月22日更新:得益于群里老哥的提醒,通过修改系统环境变量得到了通过yarn下载electron失败的问题,具体操作如下:用户环境变量中新增两个个变量,一个是变量名为`ELECTRON_MIRROR`,变量值为`https://npm.taobao.org/mirrors/electron/`,另一个是变量名为`registry`,变量值为`https://registry.npm.taobao.org/`,然后系统变量中同样也加上这两个值,完成之后,删除node_module文件夹。然后执行yarn install,如果还是提示未安装,那就去electron文件夹内执行一次yarn install,就好了。这样的话,不仅仅只是yarn更快了,electron的rebuild也会加速很多。所以推荐使用yarn。
(优先尝试)使用npm config edit打开npm配置文件,添加上electron_mirror=https://cdn.npm.taobao.org/dist/electron/ ,然后重启窗口删除node_module文件夹,重新安装依赖即可。
......
......@@ -5,7 +5,8 @@ module.exports = {
},
dev: {
env: require('./dev.env'),
removeElectronJunk: true
removeElectronJunk: true,
port: 9080
},
UseStartupChart: true,
IsUseSysTitle: true
......
......@@ -2249,12 +2249,11 @@
"dev": true
},
"axios": {
"version": "0.19.0",
"resolved": "https://registry.npm.taobao.org/axios/download/axios-0.19.0.tgz",
"integrity": "sha1-jgm/89kSLhM/e4EByPvdAO09Krg=",
"version": "0.19.1",
"resolved": "https://registry.npm.taobao.org/axios/download/axios-0.19.1.tgz",
"integrity": "sha1-imoE7tI9/nJ0fh3UPGBLjxZ3tao=",
"requires": {
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
"follow-redirects": "1.5.10"
}
},
"babel-code-frame": {
......@@ -4279,9 +4278,9 @@
}
},
"date-fns": {
"version": "2.8.1",
"resolved": "https://registry.npm.taobao.org/date-fns/download/date-fns-2.8.1.tgz",
"integrity": "sha1-IQk2LMtsh8PKAR6eMfcCvAnkEjs="
"version": "2.9.0",
"resolved": "https://registry.npm.taobao.org/date-fns/download/date-fns-2.9.0.tgz",
"integrity": "sha1-0LF1pcN+1fF7l+InK7wfpa7Gd9I="
},
"de-indent": {
"version": "1.0.2",
......@@ -4804,9 +4803,9 @@
"dev": true
},
"electron": {
"version": "7.1.7",
"resolved": "https://registry.npm.taobao.org/electron/download/electron-7.1.7.tgz?cache=0&sync_timestamp=1576790381475&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron%2Fdownload%2Felectron-7.1.7.tgz",
"integrity": "sha1-Ug4rxCLj39S64WbdO+YhAfLL3FI=",
"version": "7.1.8",
"resolved": "https://registry.npm.taobao.org/electron/download/electron-7.1.8.tgz",
"integrity": "sha1-fNUP30LFXJ3oarEm6YPSP9idXZk=",
"dev": true,
"requires": {
"@electron/get": "^1.0.1",
......@@ -7139,9 +7138,9 @@
},
"dependencies": {
"core-js": {
"version": "3.6.0",
"resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.6.0.tgz",
"integrity": "sha1-K4VORR3hln0eKYlgJc3BOiUY2eo=",
"version": "3.6.2",
"resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.6.2.tgz?cache=0&sync_timestamp=1578332366962&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-3.6.2.tgz",
"integrity": "sha1-J5nqGlkFDwrPUN/om5FtZQOxbKo=",
"dev": true,
"optional": true
}
......@@ -7231,15 +7230,13 @@
"dev": true
},
"globalthis": {
"version": "1.0.0",
"resolved": "https://registry.npm.taobao.org/globalthis/download/globalthis-1.0.0.tgz",
"integrity": "sha1-xfuYITqbRZX1nPPnB08UG0Fp2q4=",
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/globalthis/download/globalthis-1.0.1.tgz?cache=0&sync_timestamp=1577757201256&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobalthis%2Fdownload%2Fglobalthis-1.0.1.tgz",
"integrity": "sha1-QBFvXZwHH56PsAN2VN8as6g7fvk=",
"dev": true,
"optional": true,
"requires": {
"define-properties": "^1.1.2",
"function-bind": "^1.1.1",
"object-keys": "^1.0.12"
"define-properties": "^1.1.3"
}
},
"globby": {
......@@ -8080,11 +8077,6 @@
"binary-extensions": "^1.0.0"
}
},
"is-buffer": {
"version": "2.0.4",
"resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-2.0.4.tgz",
"integrity": "sha1-PlcvI8hBGlz9lVfISeNmXgspBiM="
},
"is-callable": {
"version": "1.1.4",
"resolved": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.4.tgz",
......
......@@ -69,8 +69,8 @@
}
},
"dependencies": {
"axios": "^0.19.0",
"date-fns": "^2.8.1",
"axios": "^0.19.1",
"date-fns": "^2.9.0",
"electron-updater": "^4.2.0",
"element-ui": "^2.13.0",
"fs-extra": "^8.1.0",
......@@ -117,7 +117,7 @@
"cross-env": "^6.0.3",
"css-loader": "^3.4.1",
"del": "^5.1.0",
"electron": "^7.1.7",
"electron": "^7.1.8",
"electron-builder": "^21.2.0",
"electron-devtools-installer": "^2.2.4",
"eslint": "^6.8.0",
......@@ -136,6 +136,7 @@
"multispinner": "^0.2.1",
"node-loader": "^0.6.0",
"node-sass": "^4.13.0",
"portfinder": "^1.0.25",
"sass-loader": "^8.0.0",
"split2": "^3.1.1",
"style-loader": "^1.1.2",
......
......@@ -16,8 +16,8 @@ if (process.env.NODE_ENV !== 'development') {
global.__static = path.join(__dirname, '/static').replace(/\\/g, '\\\\')
}
// 将文件地址挪到这里
const winURL = process.env.NODE_ENV === 'development' ? 'http://localhost:9080' : `file://${__dirname}/index.html`
const loadingURL = process.env.NODE_ENV === 'development' ? 'http://localhost:9080/static/loader.html' : `file://${__static}/loader.html`
const winURL = process.env.NODE_ENV === 'development' ? `http://localhost:${process.env.PORT}` : `file://${__dirname}/index.html`
const loadingURL = process.env.NODE_ENV === 'development' ? `http://localhost:${process.env.PORT}/static/loader.html` : `file://${__static}/loader.html`
var loadWindow = null
var mainWindow = null
......
......@@ -101,7 +101,7 @@ export default {
},
// 清空数据库的数据
deledata() {
// dialog为electron实例,data则是显示需要的参数,fun是需要执行的函数,此选项不是为必选的
// data则是显示需要的参数
const data = {
title: "清除数据",
buttons: ["确定了!", "才不要,我手滑了"],
......@@ -130,12 +130,6 @@ export default {
});
}
});
// api.MessageBox(dialog, data, fun).then(res => {});
// const data = {
// title:'发生致命错误',
// message:'?'
// }
// api.ErrorMessageBox(dialog,data)
},
CheckUpdate(data) {
switch (data) {
......@@ -207,7 +201,7 @@ export default {
this.$alert("下载由于未知原因被中断!", "提示", {
confirmButtonText: "重试",
callback: action => {
ipcApi.send("download-restart");
ipcApi.send("satrt-download");
}
});
}
......
......@@ -9,8 +9,6 @@
</div>
<div class="bullshit">
<div class="bullshit__oops">OOPS!</div>
<div class="bullshit__info">版权所有<a class="link-type" href="https://wallstreetcn.com" target='_blank'>华尔街见闻</a></div>
<div class="bullshit__headline">{{ message }}</div>
<div class="bullshit__info">请检查您输入的网址是否正确,请点击以下按钮返回主页或者发送错误报告</div>
<a href="/" class="bullshit__return-home">返回首页</a>
</div>
......@@ -28,11 +26,6 @@ export default {
img_404,
img_404_cloud
}
},
computed: {
message() {
return '特朗普说这个页面你不能进......'
}
}
}
</script>
......