透過 100 多個技巧學習 Nuxt!

electron
nuxt-electron

整合 Nuxt 和 Electron。

Nuxt Electron

npm versionnpm downloadsLicense

整合 Nuxt 和 Electron

功能

  • 📦 開箱即用
  • 🔥 熱重啟 (主進程)
  • 🚀 熱重載 (預載腳本)

快速設定

  1. 將以下相依性加入您的專案
# Using pnpm
pnpm add -D nuxt-electron vite-plugin-electron vite-plugin-electron-renderer electron electron-builder
# Using yarn
yarn add --dev nuxt-electron vite-plugin-electron vite-plugin-electron-renderer electron electron-builder
# Using npm
npm install --save-dev nuxt-electron vite-plugin-electron vite-plugin-electron-renderer electron electron-builder
  1. nuxt-electron 加入 nuxt.config.tsmodules 區段
export default defineNuxtConfig({
  modules: ['nuxt-electron'],
  electron: {
    build: [
      {
        // Main-Process entry file of the Electron App.
        entry: 'electron/main.ts',
      },
    ],
  },
})
  1. 建立 electron/main.ts 檔案並輸入以下程式碼
import { app, BrowserWindow } from 'electron'

app.whenReady().then(() => {
  new BrowserWindow().loadURL(process.env.VITE_DEV_SERVER_URL)
})
  1. main 條目加入 package.json
{
+ "main": "dist-electron/main.js"
}

就這樣!您現在可以在您的 Nuxt 應用程式中使用 Electron 了 ✨

Electron 選項

這是基於 vite-plugin-electron,詳細選項請參閱文件

export interface ElectronOptions {
  /**
   * `build` can specify multiple entry builds, which can be Main process, Preload scripts, Worker process, etc.
   * 
   * @example
   * 
   * ```js
   * export default defineNuxtConfig({
   *   modules: ['nuxt-electron'],
   *   electron: {
   *     build: [
   *       {
   *         // Main-Process entry file of the Electron App.
   *         entry: 'electron/main.ts',
   *       },
   *     ],
   *   },
   * })
   * ```
   */
  build: import('vite-plugin-electron').ElectronOptions[],
  /**
   * @see https://github.com/electron-vite/vite-plugin-electron-renderer
   */
  renderer?: Parameters<typeof import('vite-plugin-electron-renderer').default>[0]
  /**
   * nuxt-electron will modify some options by default
   * 
   * @defaultValue
   * 
   * ```js
   * export default defineNuxtConfig({
   *   ssr: false,
   *   app: {
   *     baseURL: './',
   *     buildAssetsDir: '/',
   *   },
   *   runtimeConfig: {
   *     app: {
   *       baseURL: './',
   *       buildAssetsDir: '/',
   *     },
   *   },
   *   nitro: {
   *     runtimeConfig: {
   *       app: {
   *         baseURL: './,
   *       }
  *      }
   *   },
   * })
   * ```
   */
  disableDefaultOptions?: boolean
}

建議的結構

讓我們以官方的 nuxt-starter-v3 範本為例

+ ├─┬ electron
+ │ └── main.ts
  ├─┬ public
  │ └── favicon.ico
  ├── .gitignore
  ├── .npmrc
  ├── index.html
  ├── app.vue
  ├── nuxt.config.ts
  ├── package.json
  ├── README.md
  └── tsconfig.json

範例

注意事項

預設情況下,我們強制應用程式在 SPA 模式下執行,因為桌面應用程式不需要 SSR

如果您想完全自訂預設行為,您可以透過 disableDefaultOptions 停用它

待辦事項

  • 撰寫測試