@witchcraft/nuxt-electron 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +299 -0
  2. package/dist/module.d.mts +117 -0
  3. package/dist/module.json +9 -0
  4. package/dist/module.mjs +362 -0
  5. package/dist/runtime/components/ElectronWindowControls.d.vue.ts +31 -0
  6. package/dist/runtime/components/ElectronWindowControls.vue +67 -0
  7. package/dist/runtime/components/ElectronWindowControls.vue.d.ts +31 -0
  8. package/dist/runtime/components/WindowControls/CloseButton.d.vue.ts +16 -0
  9. package/dist/runtime/components/WindowControls/CloseButton.vue +54 -0
  10. package/dist/runtime/components/WindowControls/CloseButton.vue.d.ts +16 -0
  11. package/dist/runtime/components/WindowControls/MaximizeButton.d.vue.ts +16 -0
  12. package/dist/runtime/components/WindowControls/MaximizeButton.vue +33 -0
  13. package/dist/runtime/components/WindowControls/MaximizeButton.vue.d.ts +16 -0
  14. package/dist/runtime/components/WindowControls/MinimizeButton.d.vue.ts +16 -0
  15. package/dist/runtime/components/WindowControls/MinimizeButton.vue +40 -0
  16. package/dist/runtime/components/WindowControls/MinimizeButton.vue.d.ts +16 -0
  17. package/dist/runtime/components/WindowControls/PinButton.d.vue.ts +27 -0
  18. package/dist/runtime/components/WindowControls/PinButton.vue +51 -0
  19. package/dist/runtime/components/WindowControls/PinButton.vue.d.ts +27 -0
  20. package/dist/runtime/electron/apiBuilder.d.ts +8 -0
  21. package/dist/runtime/electron/apiBuilder.js +9 -0
  22. package/dist/runtime/electron/createBroadcastHandlers.d.ts +4 -0
  23. package/dist/runtime/electron/createBroadcastHandlers.js +30 -0
  24. package/dist/runtime/electron/createBroadcaster.d.ts +2 -0
  25. package/dist/runtime/electron/createBroadcaster.js +7 -0
  26. package/dist/runtime/electron/createNuxtFileProtocolHandler.d.ts +14 -0
  27. package/dist/runtime/electron/createNuxtFileProtocolHandler.js +20 -0
  28. package/dist/runtime/electron/createWindowControlsApi.d.ts +19 -0
  29. package/dist/runtime/electron/createWindowControlsApi.js +6 -0
  30. package/dist/runtime/electron/createWindowControlsApiHandler.d.ts +4 -0
  31. package/dist/runtime/electron/createWindowControlsApiHandler.js +24 -0
  32. package/dist/runtime/electron/getEventWindow.d.ts +11 -0
  33. package/dist/runtime/electron/getEventWindow.js +8 -0
  34. package/dist/runtime/electron/getPaths.d.ts +27 -0
  35. package/dist/runtime/electron/getPaths.js +33 -0
  36. package/dist/runtime/electron/getPreloadMeta.d.ts +25 -0
  37. package/dist/runtime/electron/getPreloadMeta.js +7 -0
  38. package/dist/runtime/electron/index.d.ts +16 -0
  39. package/dist/runtime/electron/index.js +16 -0
  40. package/dist/runtime/electron/promisifyApi.d.ts +40 -0
  41. package/dist/runtime/electron/promisifyApi.js +41 -0
  42. package/dist/runtime/electron/promisifyReply.d.ts +8 -0
  43. package/dist/runtime/electron/promisifyReply.js +27 -0
  44. package/dist/runtime/electron/registerDevtoolsShortcuts.d.ts +2 -0
  45. package/dist/runtime/electron/registerDevtoolsShortcuts.js +10 -0
  46. package/dist/runtime/electron/static.d.ts +12 -0
  47. package/dist/runtime/electron/static.js +8 -0
  48. package/dist/runtime/electron/types.d.ts +1 -0
  49. package/dist/runtime/electron/types.js +0 -0
  50. package/dist/runtime/electron/useDevDataDir.d.ts +1 -0
  51. package/dist/runtime/electron/useDevDataDir.js +8 -0
  52. package/dist/runtime/electron/useNuxtRuntimeConfig.d.ts +2 -0
  53. package/dist/runtime/electron/useNuxtRuntimeConfig.js +4 -0
  54. package/dist/runtime/utils/isElectron.d.ts +9 -0
  55. package/dist/runtime/utils/isElectron.js +3 -0
  56. package/dist/types.d.mts +3 -0
  57. package/genDevDesktop.js +47 -0
  58. package/package.json +93 -0
  59. package/src/module.ts +549 -0
  60. package/src/runtime/components/ElectronWindowControls.vue +94 -0
  61. package/src/runtime/components/WindowControls/CloseButton.vue +56 -0
  62. package/src/runtime/components/WindowControls/MaximizeButton.vue +35 -0
  63. package/src/runtime/components/WindowControls/MinimizeButton.vue +42 -0
  64. package/src/runtime/components/WindowControls/PinButton.vue +56 -0
  65. package/src/runtime/electron/apiBuilder.ts +27 -0
  66. package/src/runtime/electron/createBroadcastHandlers.ts +36 -0
  67. package/src/runtime/electron/createBroadcaster.ts +11 -0
  68. package/src/runtime/electron/createNuxtFileProtocolHandler.ts +42 -0
  69. package/src/runtime/electron/createWindowControlsApi.ts +27 -0
  70. package/src/runtime/electron/createWindowControlsApiHandler.ts +34 -0
  71. package/src/runtime/electron/getEventWindow.ts +19 -0
  72. package/src/runtime/electron/getPaths.ts +68 -0
  73. package/src/runtime/electron/getPreloadMeta.ts +36 -0
  74. package/src/runtime/electron/index.ts +17 -0
  75. package/src/runtime/electron/promisifyApi.ts +102 -0
  76. package/src/runtime/electron/promisifyReply.ts +49 -0
  77. package/src/runtime/electron/registerDevtoolsShortcuts.ts +12 -0
  78. package/src/runtime/electron/static.ts +14 -0
  79. package/src/runtime/electron/types.ts +1 -0
  80. package/src/runtime/electron/useDevDataDir.ts +8 -0
  81. package/src/runtime/electron/useNuxtRuntimeConfig.ts +7 -0
  82. package/src/runtime/utils/isElectron.ts +11 -0
package/README.md ADDED
@@ -0,0 +1,299 @@
1
+ # @witchcraft/nuxt-electron
2
+
3
+ [![npm version][npm-version-src]][npm-version-href]
4
+ [![npm downloads][npm-downloads-src]][npm-downloads-href]
5
+ [![License][license-src]][license-href]
6
+ [![Nuxt][nuxt-src]][nuxt-href]
7
+
8
+
9
+
10
+ ## Features
11
+
12
+ - :zap: Auto reloads/restarts electron on changes to the main/renderer code or nuxt server restarts.
13
+ - :rocket: Api calls are proxied to the server.
14
+ - :start: Route paths are not touched. Does not require static builds or changing baseURL/buildAssetsDir.
15
+ - :scissors: Trims server and non-electron routes from the electron bundle.
16
+ - :open_file_folder: Modifies directory structure for easier multi-platform builds.
17
+ - :hammer_and_wrench: Helpful Tools/Composables
18
+ - `isElectron`
19
+ - Electron Only
20
+ - `useRuntimeConfig().public` (via `useNuxtRuntimeConfig`)
21
+ - `registerDevtoolsShortcuts`
22
+ - `useDevDataDir` (reroute the user data dir to a local folder during dev for easier development)
23
+ - `ElectronWindowControls` component for completely custom window controls.
24
+ - Various helpers for setting up apis such as:
25
+ - `createBroadcasters/createBroadcastHandlers` for sending messages to all windows.
26
+ - `createWindowControlsApi` for calling close/minimize/maximize/pin from the renderer and an `ElectronWindowControls` component for rending a basic set.
27
+ - `promisifyApi`(preload) and `promisifyReply`(main) for easily creating and handling apis in the preload script.
28
+ - See also [@witchcraft/nuxt-logger](todo) for electron logging utilities.
29
+
30
+ # Playground
31
+
32
+ There is a playground available but it only works locally due to electron.
33
+
34
+ ## Install
35
+ ```bash
36
+ pnpx nuxi module add @witchcraft/nuxt-electron
37
+
38
+ ```
39
+ The library installs the @witchcraft/ui module to use it's css config and twMerge.
40
+
41
+ If using the components, you should add the library to your tailwind css as a source:
42
+ ```css [assets/css/tailwind.css]
43
+ @source "../../../.nuxt/witchcraft-electron.css";
44
+ ```
45
+
46
+ ## Usage
47
+
48
+ A directory structure like the following is suggested:
49
+ ```
50
+ .dist/ (I prefer .dist over dist so it stays hidden and at the top)
51
+ ├─ [platform]
52
+ ├─ .output (nuxt output)
53
+ ├─ release
54
+ ├─ ${productName}_${version}.${ext}
55
+ ├─ build (for any intermediate builds like electron's)
56
+ app/ - nuxt code
57
+ app-electron/ - contains all the main/renderer code
58
+ ```
59
+ Usage of nuxt 4's new directory structure is recommended.
60
+
61
+ For whatever electron builder you want to use, you must point it at the correct directories.
62
+
63
+ For `electron-builder` with the default directories the module uses and to have all the artifacts in one folder, add:
64
+
65
+ ```
66
+ {
67
+ "directories": {
68
+ "output": ".dist/electron/release"
69
+ },
70
+ "files": [
71
+ ".dist/electron/build/**/*",
72
+ ".dist/electron/.output/public/**/*"
73
+ ],
74
+ "linux": {
75
+ "artifactName": "${productName}_${version}.${ext}",
76
+ // ...
77
+ },
78
+ "mac": {
79
+ "artifactName": "${productName}_${version}.${ext}",
80
+ // ...
81
+ },
82
+ "win": {
83
+ "artifactName": "${productName}_${version}.${ext}"
84
+ // ...
85
+ },
86
+ }
87
+ ```
88
+
89
+ Add the following to the package.json:
90
+ ```jsonc
91
+ // package.json
92
+ {
93
+ "main": ".dist/electron/build/main.cjs",
94
+ "scripts": {
95
+ "dev": "nuxi dev",
96
+ "build": "nuxi build",
97
+ "preview": "nuxt preview .dist/web",
98
+ "======= electron": "=======",
99
+ "dev:electron": "AUTO_OPEN=electron nuxi dev",
100
+ // write a dev desktop file for linux, see below
101
+ "gen:dev:electron:desktop": "node node_modules/@witchcraft/nuxt-electron/genDevDesktop.js YOURAPPNAMEK",
102
+ // for the desktop file
103
+ "launch:electron": "electron .",
104
+ "build:electron": "BUILD_ELECTRON=true nuxi build",
105
+ "build:electron:no-pack": "SKIP_ELECTRON_PACK=true BUILD_ELECTRON=true nuxi build",
106
+ "build:electron:pack": "electron-builder",
107
+ "preview:electron": "concurrrently --kill-others \" npm run preview\" \"npm run launch:electron\""
108
+ }
109
+ }
110
+ ```
111
+
112
+ By default the module will not open electron. You must set `process.env.AUTO_OPEN` to include the string `electron` or set `autoOpen `in the options to true, hence the seperate `dev:electron` script.
113
+
114
+ The idea is if you use other platform modules as well, you'd do `AUTO_OPEN=electron,android`, etc. for each module you wanted to actually have auto open.
115
+
116
+ Note that `preview:electron` requires `preview` be run at the same time to see how the `/api` route gets correctly proxied (to localhost in this case, see `main.ts` code below for how this is accomplished). In production, as configured below, `PUBLIC_SERVER_URL` will do nothing.
117
+
118
+ ```jsonc
119
+ {
120
+ "scripts": {
121
+ "preview:electron:dev": "concurrrently --kill-others \" npm run dev\" \"PUBLIC_SERVER_URL=http://localhost:3000 electron .\"",
122
+ "preview:electron:prod": "electron .\""
123
+
124
+ }
125
+ }
126
+ ```
127
+
128
+ ### Electron Files
129
+
130
+ In main to get the correct paths during build and dev, use the `getPaths` helper.
131
+
132
+ To get the dev user data dir, use the `useDevDataDir` helper.
133
+
134
+ We also need to create the nuxt `file://` protocol handler for every window and configure the proxies for server calls.
135
+
136
+ ```ts
137
+ // main.ts
138
+
139
+ import { getPaths, useDevDataDir, createNuxtFileProtocolHandler } from "@witchcraft/nuxt-electron/electron"
140
+
141
+ const paths = getPaths()
142
+ const userDataDir = useDevDataDir() ?? app.getPath("userData")
143
+
144
+ // when creating a window later
145
+ const win = new BrowserWindow({
146
+ title: "...",
147
+ webPreferences: {
148
+ preload: paths.preloadPath
149
+ }
150
+ })
151
+
152
+ // proxy /api requests to the real server
153
+ const proxies = {
154
+ "/api": paths.publicServerUrl,
155
+ }
156
+
157
+ // for every session partition
158
+ createNuxtFileProtocolHandler(win.webContents.session, paths.nuxtDir, proxies)
159
+ await win.loadURL(paths.windowUrl)
160
+ ```
161
+
162
+ ```ts [nuxt.config.ts]
163
+ export default defineNuxtConfig({
164
+ modules: [
165
+ "@witchcraft/nuxt-electron",
166
+ ],
167
+ electron: {
168
+ additionalElectronVariables: {
169
+ // required for getPaths to work in production, see it for details
170
+ publicServerUrl: process.env.NODE_ENV === "production"
171
+ ? `"mysite.com"`
172
+ : `undefined`
173
+ }
174
+ }
175
+ })
176
+ ```
177
+
178
+ A full example, including usage with `@witchcraft/nuxt-logger` is available in the playground.
179
+
180
+
181
+ **NOTE: The proxies only work for api calls. They do not work for pages.**
182
+
183
+ Proxying server only page routes seems possible but complicated because each route's resource calls must also be proxied. I don't think it's worth the pain. It's easier to make sure the electron app never accesses server only routes.
184
+
185
+
186
+ ### Runtime Config
187
+
188
+ Anywhere in electron's renderer files you can also now use nuxt's public runtime config (only the public, you don't want to expose your server secrets to the electron app at all).
189
+
190
+ ```ts
191
+ import { useNuxtRuntimeConfig } from "@witchcraft/nuxt-electron/electron"
192
+
193
+ const publicRuntimeConfig = useNuxtRuntimeConfig()
194
+ ```
195
+
196
+ ### Renderer `isElectron` Composable Setup
197
+
198
+ To be absolutely sure we are in electron, in electron's preload script define `electron` on the window:
199
+
200
+ ```ts
201
+ // preload.ts
202
+ contextBridge.exposeInMainWorld("electron", { })
203
+ ```
204
+
205
+ This way the composable can then check if the global exists.
206
+
207
+ ### Logging
208
+
209
+ An isomorphic logger is also available for electron, see [@witchcraft/nuxt-logger](https://npmjs.com/package/@witchcraft/nuxt-logger). The playground in this module includes it as an example.
210
+
211
+ ### Dev Desktop File
212
+
213
+ A script is provided for use with electron-builder to generate a dev desktop file for linux.
214
+
215
+ It will create a desktop file named `dev-YOURAPPNAME.desktop`, put it in `~/.local/share/applications/` and re-install it with `xdg-desktop-menu un/install`.
216
+
217
+ The desktop's exec is set to run bash, cd into the project dir and run `npm run launch:electron`. You can pass a second parameter to the script to use a different package.json script.
218
+
219
+ This is useful for when registering deep links in the app as these require a desktop file to work on linux.
220
+
221
+
222
+ ## Misc Notes
223
+
224
+ Note that while nuxt's path aliases are passed to the electron vite config, you cannot use other nuxt paths (such as those added by modules, e.g. `#somemodule`) in electron. This is why a seperate `@witchcraft/nuxt-electron/electron` export is provided.
225
+
226
+
227
+ ## How it Works
228
+
229
+ #### Development
230
+
231
+ Electron is pointed to the localhost server and sees a similar view to the web app except we must client side detect we're on electron and redirect to the `electronRoute`.
232
+
233
+ #### Production
234
+
235
+ Normally nuxt has to be configured to output a SPA by setting `ssr: false` and you have to modify baseURL and buildAssetsDir for everything to work (among other changes, see nuxt-electron module for the typical changes).
236
+
237
+ But this module has gone a different route.
238
+
239
+ First for production only changes, we run the nuxt config with a different env variable to enable electron only, production only options (such as route trimming, see [Electron Route](#Electron-Route)).
240
+
241
+ Then we use a custom protocol to proxy requests and api calls.
242
+
243
+ ##### Custom `file://` Handler
244
+
245
+ Electron uses the `file://` protocol to load all scripts/assets/etc.
246
+
247
+ This does not work well with the default nuxt config so we use use a custom protocol handler to intercept all `file://` requests and correctly route them so that we don't have to be changing nuxt's baseURL and buildAssetsDir.
248
+
249
+ ##### Electron Route
250
+ In electron we want to point to a different route, `/{electronRoute}`, so we can trim other routes from the bundle.
251
+
252
+ To do this we prerender the `/{electronRoute}` route and point electron to `/{electronRoute}/index.html`.
253
+ - This used to require changing baseURL and buildAssetsDir to "./" and "/" respectively, but with the new `file://` handler it now works perfectly.
254
+
255
+ We then need to remove unwanted routes from the bundle which are included regardless of whether they're used. So for the web app, remove electron routes, and for the electron app, remove web app routes. This is done through a nuxt hook in the nuxt config on production builds only.
256
+
257
+ Note we would ideally also remove "/" from the prerender, but this requires manually splitting chunks by pages and I was having issues with this.
258
+
259
+ ###### Why not use a redirect?
260
+
261
+ A `routeRules` redirect won't work, because it will trigger a request to electron's file protocol handler which we don't know what to do with.
262
+
263
+ A redirect from a page (e.i. `if (process.client && isElectron) { navigateTo("/app") }`) works, but it takes a little big of time to navigate. This is still needed for development redirecting, but not in production.
264
+
265
+ #### Build
266
+
267
+ Building for electron requires lots of changes to the config. We can't just build for web then copy. So this module reroutes the output when building the web app (and reroutes it differently when building for electron (see directory sturcture above).
268
+
269
+ The use out the nested .output is because nuxt preview will add this automatically even if we set a custom cwd. This was we can do `nuxt preview .dist/platform` though it might often not be of much help.
270
+
271
+ To build for electron you must set `process.env.BUILD_ELECTRON` to true, to do the configuration required to make the final output actually work with electron.
272
+
273
+ ##### Electron Build
274
+
275
+ The electron app itself is "built" in two parts, the "build" and the "packing".
276
+
277
+ First the the nuxt app (`.dist/electron/.output`) and the electron main/preload bundles (`.dist/electron/build`) are built.
278
+
279
+ Then the script `build:electron:pack` is run (configurable).
280
+
281
+ The module does not run electron-builder directly since you could be packing the app in some other way.
282
+
283
+ Note that nuxt builds the server anyways, it's just not packed into the final app if you configure your packer correctly.
284
+
285
+ Your packer should then create the final executables (into `.dist/electron/release`).
286
+
287
+
288
+ <!-- Badges -->
289
+ [npm-version-src]: https://img.shields.io/npm/v/@witchcraft/nuxt-electron/latest.svg?style=flat&colorA=020420&colorB=00DC82
290
+ [npm-version-href]: https://npmjs.com/package/@witchcraft/nuxt-electron
291
+
292
+ [npm-downloads-src]: https://img.shields.io/npm/dm/@witchcraft/nuxt-electron.svg?style=flat&colorA=020420&colorB=00DC82
293
+ [npm-downloads-href]: https://npmjs.com/package/@witchcraft/nuxt-electron
294
+
295
+ [license-src]: https://img.shields.io/npm/l/@witchcraft/nuxt-electron.svg?style=flat&colorA=020420&colorB=00DC82
296
+ [license-href]: https://npmjs.com/package/@witchcraft/nuxt-electron
297
+
298
+ [nuxt-src]: https://img.shields.io/badge/Nuxt-020420?logo=nuxt.js
299
+ [nuxt-href]: https://nuxt.com
@@ -0,0 +1,117 @@
1
+ import * as _nuxt_schema from '@nuxt/schema';
2
+ import { ElectronOptions } from 'vite-plugin-electron';
3
+ import { notBundle } from 'vite-plugin-electron/plugin';
4
+
5
+ interface ModuleOptions {
6
+ srcDir: string;
7
+ /**
8
+ * The dir for building for electron. `.output` and `build` will be put in here, and also release (but that's left up to your electron packing configuration).
9
+ *
10
+ * @default ".dist/electron/"
11
+ */
12
+ electronBuildDir: string;
13
+ /**
14
+ * The nuxt output dir when not building electron.
15
+ *
16
+ * @default ".dist/web/.output"
17
+ */
18
+ nonElectronNuxtBuildDir: string;
19
+ /**
20
+ * The main route of the electron app. Electron will be pointed to this route.
21
+ *
22
+ * @default "/app"
23
+ */
24
+ electronRoute: string;
25
+ /**
26
+ * Additional routes to include in the electron build. Note that "/" is always included as not including it was causing issues.
27
+ */
28
+ additionalRoutes: string[];
29
+ /** Extra cli arguments to launch electron with in dev mode */
30
+ extraCliArgs: string[];
31
+ /**
32
+ * If set, adds `--user-data-dir ${devUserDataDir}` to the cli arguments in development mode.
33
+ *
34
+ * You will then need to parse this in main.ts, a `useDevDataDir` function is provided for this. This does not do any advanced parsing, just takes the next argument after `--user-data-dir` so the path must not contain spaces.
35
+ * ```ts
36
+ * const userDataDir = useDevDataDir() ?? app.getPath("userData")
37
+ *
38
+ * @default "~~/.user-data-dir"
39
+ */
40
+ devUserDataDir: string;
41
+ /**
42
+ * The script to run to build/pack the electron app.
43
+ *
44
+ * @default "npm run build:electron:pack"
45
+ */
46
+ electronBuildPackScript: string;
47
+ /** Whether to enable the module. */
48
+ enable: boolean;
49
+ /**
50
+ * Whether to auto-open electron. If undefined, is controlled by the AUTO_OPEN env variable instead (it should include the word `electron` to enable autoOpen).
51
+ *
52
+ * This only works in dev mode.
53
+ *
54
+ * @default undefined
55
+ */
56
+ autoOpen: boolean;
57
+ /**
58
+ * Pass public runtime config options only for electron.
59
+ */
60
+ electronOnlyRuntimeConfig: Record<string, any>;
61
+ /**
62
+ * Whether you're using a preload script.
63
+ *
64
+ * @default true
65
+ */
66
+ usePreloadScript: boolean;
67
+ /**
68
+ * Pass custom vite options to the electron vite builder (e.g. wasm()) as they are not copied over from nuxt's vite config.
69
+ *
70
+ * Note that `build.emptyOutDir` cannot be changed, it must be false for the reloading to work.
71
+ */
72
+ electronViteOptions: ElectronOptions["vite"];
73
+ notBundleOptions: Parameters<typeof notBundle>[0];
74
+ /**
75
+ * Additional variables to "bake" into the electron build. Note these must be quoted if they are strings.
76
+ *
77
+ * You can set these as properties of STATIC, to make it clearer what they are.
78
+ *
79
+ * ```ts
80
+ * import { STATIC } from "@witchcraft/nuxt-electron/electron"
81
+ *
82
+ * // assuming electron.additionalElectronVariables.someVariable = `"some-var"`
83
+ *
84
+ * STATIC.SOME_VARIABLE = process.env.SOME_VARIABLE
85
+ *
86
+ * // becomes
87
+ * STATIC.SOME_VARIABLE = "some-var"
88
+ * ```
89
+ */
90
+ additionalElectronVariables: Record<string, string>;
91
+ /**
92
+ * Additional vite defines to copy from the resolved vite config.
93
+ *
94
+ * The module copies the following defines from nuxt's vite config for the electron vite config:
95
+ *
96
+ * ```
97
+ * __NUXT_VERSION__
98
+ * process.dev
99
+ * import.meta.dev
100
+ * process.test
101
+ * import.meta.test
102
+ *```
103
+ * And the following are also added:
104
+ * ```
105
+ * import.meta.electron (true from main, false elsewhere)
106
+ * process.electron (true from main, false elsewhere)
107
+ * ```
108
+ *
109
+ * They will only be true for files that might be imported by main only. For renderer/client side use `isElectron()` instead. We cannot define them on the client side because during dev they would be wrong (electorn is always pointing to the same page as the server).
110
+ *
111
+ */
112
+ additionalViteDefinesToCopy: string[];
113
+ }
114
+ declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
115
+
116
+ export { _default as default };
117
+ export type { ModuleOptions };
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "electron",
3
+ "configKey": "electron",
4
+ "version": "0.0.0",
5
+ "builder": {
6
+ "@nuxt/module-builder": "1.0.2",
7
+ "unbuild": "3.6.1"
8
+ }
9
+ }