Vue使用electron生成桌面應(yīng)用過(guò)程詳解
學(xué)習(xí)關(guān)鍵語(yǔ)句
使用electron打包vue項(xiàng)目
electron制作桌面應(yīng)用
寫在前面
很想使用 electron 制作一個(gè)桌面應(yīng)用,但是真的上手使用的時(shí)候才發(fā)現(xiàn) electron 的坑實(shí)在是太多了
先將遇到的坑記錄在這里,遇到一個(gè)記錄一個(gè)
- 使用 9 以上版本的 vue-i18n 的項(xiàng)目打包成應(yīng)用時(shí)會(huì)失敗,本地運(yùn)行沒(méi)問(wèn)題
- 項(xiàng)目路徑中有中文會(huì)打包失敗
和 electron 相關(guān)的插件版本更替實(shí)在是是太快,并且版本之間還不一定能兼容,所以這篇文章中使用到的插件都會(huì)寫死版本來(lái)保證一定可以打包成功
開(kāi)始
項(xiàng)目開(kāi)始
我們不從零開(kāi)始,直接從之前的項(xiàng)目中拉一個(gè)文件來(lái)作為例子,你可以點(diǎn)擊這里進(jìn)行下載項(xiàng)目,不需要積分
值得一提的是,這篇文章不會(huì)提供完整的文件,你可以使用下載的項(xiàng)目開(kāi)始學(xué)習(xí)
安裝依賴
安裝指定版本 此時(shí)日期為 2023-04-11
npm i electron@24.0.0 -D
npm i vite-plugin-electron@0.11.1 -D
npm i electron-builder@23.6.0 -D
npm i cross-env@7.0.3
針對(duì)項(xiàng)目由 vite 創(chuàng)建的 vue3 項(xiàng)目
修改 vite.config.ts
變動(dòng)語(yǔ)句
vite.config.ts 變動(dòng)
import electron from 'vite-plugin-electron'
electron({
entry: "dist-electron/index.js"
})
放入語(yǔ)句
vite.config.ts 放入
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import electron from 'vite-plugin-electron'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
electron({
entry: "dist-electron/index.js"
})
],
})
修改完成后,會(huì)自動(dòng)在項(xiàng)目根目錄出現(xiàn) dist-electron 文件夾,文件夾內(nèi)有一個(gè)文件 index.js
如果沒(méi)有自動(dòng)出現(xiàn),那就手動(dòng)創(chuàng)建
修改 index.js
index.js
import { app, BrowserWindow } from 'electron'
import path from 'path'
// app 控制應(yīng)用程序的事件生命周期。
// BrowserWindow 創(chuàng)建并控制瀏覽器窗口。
let win;
// 定義全局變量獲取 窗口實(shí)例
const createWindow = () => {
win = new BrowserWindow({
webPreferences: {
devTools: true,
contextIsolation: false,
nodeIntegration: true
// 允許html頁(yè)面上的javascipt代碼訪問(wèn)nodejs 環(huán)境api代碼的能力(與node集成的意思)
}
})
if (process.env.NODE_ENV != 'development') {
win.loadFile(path.join(__dirname, "../dist/index.html"));
} else {
// vite-plugin-electron@0.11.1版本使用以下
win.loadURL(`${process.env['VITE_DEV_SERVER_URL']}`)
}
}
//在Electron完成初始化時(shí)被觸發(fā)
app.whenReady().then(createWindow)
修改 package.json
- 刪除 “type”: “module”
- “name” 同級(jí)添加 “main”: “dist-electron/index.js”
- ,將 script 中的 dev 指令修改為 cross-env NODE_DEV=development vite
- 將 script 中的 build 指令修改為 vue-tsc --noEmit && vite build && electron-builder
將以下添加到 “name” 同級(jí)
"build": {
"appId": "com.electron.desktop",
"productName": "electron",
"asar": true,
"copyright": "Copyright ? 2023 electron",
"directories": {
"output": "release/"
},
"files": [
"dist",
"dist-electron"
],
"mac": {
"artifactName": "${productName}_${version}.${ext}",
"target": [
"dmg"
]
},
"win": {
"target": [
{
"target": "nsis",
"arch": [
"x64"
]
}
],
"artifactName": "${productName}_${version}.${ext}"
},
"nsis": {
"oneClick": false,
"perMachine": false,
"allowToChangeInstallationDirectory": true,
"deleteAppDataOnUninstall": false
},
"publish": [
{
"provider": "generic",
"url": "http://127.0.0.1:8086"
}
],
"releaseInfo": {
"releaseNotes": "版本更新的具體內(nèi)容"
}
}
本地測(cè)試
npm run dev
會(huì)自動(dòng)打開(kāi)
打包成exe文件
npm run build
輸出在項(xiàng)目根目錄下新建的文件夾 release 中,雙擊 exe 文件進(jìn)行安裝就可以打開(kāi)了

到此這篇關(guān)于Vue使用electron生成桌面應(yīng)用過(guò)程詳解的文章就介紹到這了,更多相關(guān)Vue electron生成桌面應(yīng)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何通過(guò)shell腳本自動(dòng)生成vue文件詳解
這篇文章主要給大家介紹了關(guān)于如何通過(guò)shell腳本自動(dòng)生成vue文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
基于vue實(shí)現(xiàn)簡(jiǎn)易打地鼠游戲
這篇文章主要為大家詳細(xì)介紹了基于vue實(shí)現(xiàn)簡(jiǎn)易打地鼠游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
Vue.Draggable實(shí)現(xiàn)拖拽效果
這篇文章主要介紹了Vue.Draggable實(shí)現(xiàn)拖拽效果,使用簡(jiǎn)單方便 ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
使用 vue 實(shí)例更好的監(jiān)聽(tīng)事件及vue實(shí)例的方法
這篇文章主要介紹了使用 vue 實(shí)例更好的監(jiān)聽(tīng)事件及vue實(shí)例的方法,介紹了一種新增 vue 實(shí)例的方法,單獨(dú)監(jiān)聽(tīng)事件,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
Vue中對(duì)數(shù)組和對(duì)象進(jìn)行遍歷和修改方式
這篇文章主要介紹了Vue中對(duì)數(shù)組和對(duì)象進(jìn)行遍歷和修改方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
element ui中表單el-form的label如何設(shè)置寬度
這篇文章主要介紹了element ui中表單el-form的label如何設(shè)置寬度,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10

