vite-plugin-electron
Advanced tools
Changelog
0.11.0 (2022-12-17)
// 0.10.0
function build(config: Configuration | Configuration[]): Promise<void>
// 0.11.0 - Same as Vite's build
function build(config: Configuration): Promise<RollupOutput | RollupOutput[] | RollupWatcher>
JavaScript API
vite-plugin-electron
's JavaScript APIs are fully typed, and it's recommended to use TypeScript or enable JS type checking in VS Code to leverage the intellisense and validation.
Configuration
- typedefineConfig
- functionresolveViteConfig
- function, Resolve the default Vite's InlineConfig
for build Electron-MainwithExternalBuiltins
- functionbuild
- functionstartup
- functionExample:
build(
withExternalBuiltins( // external Node.js builtin modules
resolveViteConfig( // with default config
{
entry: 'foo.ts',
vite: {
mode: 'foo-mode', // for .env file
plugins: [{
name: 'plugin-build-done',
closeBundle() {
// Startup Electron App
startup()
},
}],
},
}
)
)
)
V8 Bytecode support π bytecode
Inspired by:
.env
| 758695dbuild()
| d9c3343Changelog
0.10.4 (2022-11-13)
build.resolve
to resolve
Changelog
0.10.3 (2022-11-10)
vite-plugin-electron-renderer
Changelog
0.10.2 (2022-10-24)
By default, the dist
folder will be automatically removed by Vite. We build Electron related files into dist-electron
to prevent it from being removed by mistake
3.2.0
| #90options.resolve()
, use 'lib-esm' for resolve Node.js modules and electron
| vite-plugin-electron-rendereroptimizeDeps
for Electron-Renderer πdist/electron
-> dist-electron
| vite-plugin-electronChangelog
0.10.1 (2022-10-12)
createRequire()
instead of import()
πonstart
provides reload()
Changelog
0.10.0 (2022-10-09)
This is a redesigned version of the API<sub><sup>(Only 3 APIs)</sub></sup>. Not compatible with previous versions!
export type Configuration = {
/**
* Shortcut of `build.lib.entry`
*/
entry?: import('vite').LibraryOptions['entry']
/**
* Triggered when Vite is built.
* If passed this parameter will not automatically start Electron App.
* You can start Electron App through the `startup` function passed through the callback function.
*/
onstart?: (this: import('rollup').PluginContext, startup: (args?: string[]) => Promise<void>) => void
vite?: import('vite').InlineConfig
}
In the past few weeks, some issues have been mentioned in many issues that cannot be solved amicably. So I refactored the API to avoid design flaws. But despite this, the new version will only be easier rather than harder.
For example, some common problems in the following issues.
Thanks to Vite@3.2.0's lib.entry
supports multiple entries, which makes the configuration of the new version very simple. So the vite-plugin-electron@0.10.0
requires Vite at least v3.2.0
.
e.g.
import electron from 'vite-plugin-electron'
// In plugins option
electron({
entry: [
'electron/entry-1.ts',
'electron/entry-2.ts',
],
})
// Or use configuration array
electron([
{
entry: [
'electron/entry-1.ts',
'electron/entry-2.ts',
],
},
{
entry: 'foo/bar.ts',
},
])
vite-plugin-electron-renderer
will change output.format
to cjs
format by default<sub><sup>(This is because currently Electron@21 only supports CommonJs)</sub></sup>, which will cause the built code to use require
to import modules, if the user nodeIntegration
is not enabled in the Electron-Main process which causes the error require is not defined
to be thrown.
vite-plugin-electron-renderer@0.10.0
provides the nodeIntegration
option. It is up to the user to decide whether to use Node.js(CommonJs).
e.g.
import renderer from 'vite-plugin-electron-renderer'
// In plugins option
renderer({
nodeIntegration: true,
})
Worker
in Electron-Main or Electron-Renderer #77, #81You can see π examples/worker
Use Worker in Electron-Main
e.g. <sub><sup>This looks the same as multiple entry</sub></sup>
import electron from 'vite-plugin-electron'
// In plugins option
electron({
entry: [
'electron/main.ts',
'electron/worker.ts',
],
})
// In electron/main.ts
new Worker(path.join(__dirname, './worker.js'))
Use Worker in Electron-Renderer
e.g.
import renderer, { worker } from 'vite-plugin-electron-renderer'
export default {
plugins: [
renderer({
// If you need use Node.js in Electron-Renderer process
nodeIntegration: true,
}),
],
worker: {
plugins: [
worker({
// If you need use Node.js in Worker
nodeIntegrationInWorker: true,
}),
],
},
}
https://github.com/electron-vite/vite-plugin-electron/pull/89
Changelog
0.9.3 (2022-09-10)
~~vite-plugin-electron~~
vite-plugin-electron-renderer
ipcRenderer
in Worker
| #69Changelog
0.9.2 (2022-08-29)
vite-plugin-electron
VITE_DEV_SERVER_HOSTNAME
instead VITE_DEV_SERVER_HOST
vite-plugin-electron-renderer
Changelog
0.9.1 (2022-08-24)
vite-plugin-electron
~~vite-plugin-electron-renderer~~
Changelog
0.9.0 (2022-08-12)
π v0.9.0
is a stable version based on vite@3.0.6
~~vite-plugin-electron~~
vite-plugin-electron-renderer
renderBuiltUrl()
based on vite@3.0.6 (vite@3.0.6-8f2065e)