electron-vue搭建
# 安装vue-cli
npm install -g vue-cli
npm intsall -g electron
vue init simulatedgreg/electron-vue my-project
# 安装依赖和运行项目
cd my-project
yarn # or npm install
yarn run dev # or npm run dev
引入SerialPort(串口调用)
npm install serialport -S
安装node-gyp
请安装python2以及vs2015~2019。
npm install -g node-gyp
安装electron-rebuild
使用electron-rebuild对SerialPort进行编译
npm i electron-rebuild
# 执行下面代码开始编译
# window
.\node_modules\.bin\electron-rebuild.cmd
# 非window
.\node_modules\.bin\electron-rebuild
打包
package.json中scripts中添加代码
"build": "node .electron-vue/build.js && electron-builder",
## 然后执行
npm run build
常见问题
执行.\node_modules.bin\electron-rebuild失败?
1.可能python2和vs2019环境没有配置好。
2.检查npm -v 版本,确实是6.14.8,高版本不行
打包失败
1.可能SerialPort版本和electron版本不匹配,修改electron版本解决问题
package.json
{
"name": "",
"version": "0.0.1",
"author": "",
"description": "An electron-vue project",
"license": null,
"main": "./dist/electron/main.js",
"scripts": {
"build": "node .electron-vue/build.js && electron-builder",
"build:dir": "node .electron-vue/build.js && electron-builder --dir",
"build:clean": "cross-env BUILD_TARGET=clean node .electron-vue/build.js",
"build:web": "cross-env BUILD_TARGET=web node .electron-vue/build.js",
"dev": "node .electron-vue/dev-runner.js",
"pack": "npm run pack:main && npm run pack:renderer",
"pack:main": "cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.main.config.js",
"pack:renderer": "cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.renderer.config.js",
"postinstall": "electron-builder install-app-deps",
"rebuild": "electron-rebuild -f -w sqlite3"
},
"build": {
"productName": "",
"appId": "",
"directories": {
"output": "build"
},
"files": [
"dist/electron/**/*"
],
"asar": false,
"extraResources": [
"nod.db"
],
"dmg": {
"contents": [
{
"x": 410,
"y": 150,
"type": "link",
"path": "/Applications"
},
{
"x": 130,
"y": 150,
"type": "file"
}
]
},
"mac": {
"icon": "build/icons/icon.icns"
},
"win": {
"icon": "build/icons/icon.ico"
},
"linux": {
"icon": "build/icons"
}
},
"dependencies": {
"axios": "^0.21.1",
"element-ui": "^2.15.1",
"multispinner": "^0.2.1",
"serialport": "^9.0.7",
"sqlite3": "^5.0.2",
"vue": "^2.6.0",
"vue-electron": "^1.0.6",
"vue-router": "^3.5.1",
"vuex": "^3.6.2",
"vuex-electron": "^1.0.3"
},
"devDependencies": {
"ajv": "^6.5.0",
"babel-core": "^6.26.3",
"babel-loader": "^7.1.4",
"babel-minify-webpack-plugin": "^0.3.1",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.7.0",
"babel-preset-stage-0": "^6.24.1",
"babel-register": "^6.26.0",
"cfonts": "^2.1.2",
"chalk": "^2.4.1",
"copy-webpack-plugin": "^4.5.1",
"cross-env": "^5.1.6",
"css-loader": "^0.28.11",
"del": "^3.0.0",
"devtron": "^1.4.0",
"electron": "11.4.6",
"electron-builder": "^22.11.3",
"electron-debug": "^3.2.0",
"electron-devtools-installer": "^3.2.0",
"electron-rebuild": "^2.3.5",
"file-loader": "^1.1.11",
"html-webpack-plugin": "^3.2.0",
"listr": "^0.14.3",
"mini-css-extract-plugin": "0.4.0",
"node-loader": "^0.6.0",
"style-loader": "^0.21.0",
"url-loader": "^1.0.1",
"vue-html-loader": "^1.2.4",
"vue-loader": "^15.2.4",
"vue-style-loader": "^4.1.0",
"vue-template-compiler": "^2.5.16",
"webpack": "^4.15.1",
"webpack-cli": "^3.0.8",
"webpack-dev-server": "^3.1.4",
"webpack-hot-middleware": "^2.22.2",
"webpack-merge": "^4.1.3"
}
}