使用 Electron 打包 Vue 項目

資源:

運行

  1. 新建一個 Vue 項目javascript

    vue create electron-vue
  2. 安裝 cross-env electronhtml

    npm install cross-env electron --save-dev
  3. 根目錄下新建electron/main.jsvue

    const {app, BrowserWindow} = require('electron')
    const path = require('path')
    
    // 保持對window對象的全局引用,若是不這麼作的話,當JavaScript對象被
    // 垃圾回收的時候,window對象將會自動的關閉
    let win
    
    function createWindow () {
      // 建立瀏覽器窗口。
      win = new BrowserWindow({width: 800, height: 600})
    
      if (process.env.NODE_ENV === 'development') {
        // 而後加載應用的 index.html。
        win.loadURL('http://localhost:9999')
      } else {
        win.loadFile(path.join(__dirname, '../dist/index.html'))
      }
    
      // 打開開發者工具
      win.webContents.openDevTools()
    
      // 當 window 被關閉,這個事件會被觸發。
      win.on('closed', () => {
        // 取消引用 window 對象,若是你的應用支持多窗口的話,
        // 一般會把多個 window 對象存放在一個數組裏面,
        // 與此同時,你應該刪除相應的元素。
        win = null
      })
    }
    
    // Electron 會在初始化後並準備
    // 建立瀏覽器窗口時,調用這個函數。
    // 部分 API 在 ready 事件觸發後才能使用。
    app.on('ready', createWindow)
    
    // 當所有窗口關閉時退出。
    app.on('window-all-closed', () => {
      // 在 macOS 上,除非用戶用 Cmd + Q 肯定地退出,
      // 不然絕大部分應用及其菜單欄會保持激活。
      if (process.platform !== 'darwin') {
        app.quit()
      }
    })
    
    app.on('activate', () => {
      // 在macOS上,當單擊dock圖標而且沒有其餘窗口打開時,
      // 一般在應用程序中從新建立一個窗口。
      if (win === null) {
        createWindow()
      }
    })
    
    // 在這個文件中,你能夠續寫應用剩下主進程代碼。
    // 也能夠拆分紅幾個文件,而後用 require 導入。
  4. 編輯 package.jsonjava

    {
      "main": "electron/main.js",
      "scripts": {
        "serve": "vue-cli-service serve --port 9999",
        "electron:dev": "cross-env NODE_ENV=development electron electron/main.js"
      },
    }
  5. 運行git

    npm run serve
    npm run electron:dev

打包

  1. 安裝 electron-buildergithub

    npm install electron-builder --save-dev
  2. 配置 package.jsonweb

    {
        "build": {
            "appId": "your.id",
            "directories": {
                "output": "build"
            },
            "mac": {
                "category": "your.app.category.type"
            }
        },
        "scripts": {
            "pack": "electron-builder --dir",
            "dist": "electron-builder"
        }
    }
  3. 新建 vue.config.jsvue-cli

    module.exports = {
      publicPath: './'
    }
  4. 打包shell

    npm run build
    npm run pack

總結

Electron 的main進程和renderer進程分開進行開發,能夠經過ipcMainipcRenderer進行通訊,數據流清晰,開發簡單。npm

相關文章
相關標籤/搜索