Nuxt Electron
集成 Nuxt 和 Electron
特性
- 📦 开箱即用
- 🔥 热重启 (主进程)
- 🚀 热重载 (预加载脚本)
快速设置
- 将以下依赖项添加到你的项目中
# 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
- 将
nuxt-electron
添加到nuxt.config.ts
的modules
部分
export default defineNuxtConfig({
modules: ['nuxt-electron'],
electron: {
build: [
{
// Main-Process entry file of the Electron App.
entry: 'electron/main.ts',
},
],
},
})
- 创建
electron/main.ts
文件并输入以下代码
import { app, BrowserWindow } from 'electron'
app.whenReady().then(() => {
new BrowserWindow().loadURL(process.env.VITE_DEV_SERVER_URL)
})
- 将
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
禁用它
待办事项
- 编写测试