foysavas / unplugin-auto-expose

Plugins for automatic exposeInMainWorld everything you exported from preload and easily importing exposed api in renderer

Home Page:https://npmjs.com/package/unplugin-auto-expose

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

unplugin-auto-expose

Plugins for automatic exposeInMainWorld everething you exported from preload and easely importing exposed api in renderer.


Stand With Ukraine

Example

// preload.ts
export const foo = 'foo string'
// Equivalent
electron.contextBridge.exposeInMainWorld('__electron_preload_foo__', 'foo string')
// renderer.ts
import {foo} from '#preload'
// Equivalent
const foo = window.__electron_preload_foo__

Limitation

Only named exports are supported.

export * from 'file' // ❌ Will not work
export {prop} from 'file' // ✔

export * as props from 'file' // ❌ Will not work
import * as file from 'file' 
export const props = file // ⚠ Will work but not recommended for security reasons

Configuration

This package contains two plugins: for prelaod and renderer builds

// /preload/vite.config.ts

import {preload} from 'unplugin-auto-expose';

export default defineConfig({
  plugins: [
    preload.vite()
  ]
})
// /renderer/vite.config.ts

import {renderer} from 'unplugin-auto-expose';

export default defineConfig({
  plugins: [
    renderer.vite({
      preloadEntry: '/absolute/path/to/preload.ts'
    })
  ]
})

TypeScript

To configurate the TypeScript, add a path to your renderer tsconfig.json:

{
  "compilerOptions": {
    "paths": {
      "#preload": [
        "/path/to/preload"
      ]
    }
  }
}

About

Plugins for automatic exposeInMainWorld everything you exported from preload and easily importing exposed api in renderer

https://npmjs.com/package/unplugin-auto-expose

License:MIT License


Languages

Language:TypeScript 64.6%Language:JavaScript 31.4%Language:HTML 4.0%