{"id":15020185,"url":"https://github.com/vite-plugin/vite-plugin-target","last_synced_at":"2025-07-21T10:06:06.933Z","repository":{"id":59298219,"uuid":"536008983","full_name":"vite-plugin/vite-plugin-target","owner":"vite-plugin","description":"Make Vite support Electron, Node.js, etc.","archived":false,"fork":false,"pushed_at":"2024-06-03T11:17:09.000Z","size":51,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-09T17:07:41.238Z","etag":null,"topics":["electron","target","vite","vite-plugin"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vite-plugin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-13T07:28:42.000Z","updated_at":"2023-09-26T12:36:30.000Z","dependencies_parsed_at":"2024-01-07T18:04:44.551Z","dependency_job_id":"4494179c-6bde-45f4-b43a-a86343275115","html_url":"https://github.com/vite-plugin/vite-plugin-target","commit_stats":{"total_commits":7,"total_committers":1,"mean_commits":7.0,"dds":0.0,"last_synced_commit":"4b3b88527ffba5f39125279781b181fdd9863bff"},"previous_names":["vite-plugin/vite-plugin-target-node"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/vite-plugin/vite-plugin-target","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vite-plugin%2Fvite-plugin-target","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vite-plugin%2Fvite-plugin-target/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vite-plugin%2Fvite-plugin-target/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vite-plugin%2Fvite-plugin-target/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vite-plugin","download_url":"https://codeload.github.com/vite-plugin/vite-plugin-target/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vite-plugin%2Fvite-plugin-target/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265029200,"owners_count":23700446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electron","target","vite","vite-plugin"],"created_at":"2024-09-24T19:54:42.074Z","updated_at":"2025-07-21T10:06:06.910Z","avatar_url":"https://github.com/vite-plugin.png","language":"TypeScript","funding_links":[],"categories":["Plugins"],"sub_categories":["Framework-agnostic Plugins"],"readme":"# vite-plugin-target\n\nMake Vite support Electron, Node.js, etc.\n\n[![NPM version](https://img.shields.io/npm/v/vite-plugin-target.svg)](https://npmjs.com/package/vite-plugin-target)\n[![NPM Downloads](https://img.shields.io/npm/dm/vite-plugin-target.svg)](https://npmjs.com/package/vite-plugin-target)\n\n## Install\n\n```sh\nnpm i -D vite-plugin-target\n```\n\n## Examples\n\n- [electron](https://github.com/vite-plugin/vite-plugin-target/tree/main/examples/electron) - with [Vite](https://vitejs.dev/).\n- [electron-forge](https://github.com/vite-plugin/vite-plugin-target/tree/main/examples/electron-forge) - with Electron's official [forge](https://www.electronforge.io/) scaffold.\n- [vite-electron-plugin](https://github.com/vite-plugin/vite-plugin-target/tree/main/examples/vite-electron-plugin) - with [vite-electron-plugin](https://github.com/electron-vite/vite-electron-plugin).\n\n## Usage\n\n```js\nimport target from 'vite-plugin-target'\n\n// Electron Renderer\nexport default {\n  plugins: [\n    target({\n      'electron-renderer': {},\n    }),\n  ],\n}\n\n// Electron Preload\nexport default {\n  plugins: [\n    target({\n      'electron-preload': {},\n    }),\n  ],\n}\n\n// Electron Main\nexport default {\n  plugins: [\n    target({\n      'electron-main': {},\n    }),\n  ],\n}\n\n// Node.js\nexport default {\n  plugins: [\n    target({\n      node: {},\n    }),\n  ],\n}\n```\n\n## API \u003csub\u003e\u003csup\u003e(Define)\u003c/sup\u003e\u003c/sub\u003e\n\n`target(options: Options)`\n\n```ts\nexport interface NodeOptions {\n  /**\n   * Pass to `config.esbuild.target`\n   */\n  version?: string\n}\n\nexport interface ElectronOptions extends NodeOptions {\n  nodeIntegration?: boolean\n}\n\nexport type Options =\n  | { node: NodeOptions }\n  | { 'electron-main': NodeOptions }\n  | { 'electron-preload': ElectronOptions }\n  | { 'electron-renderer': ElectronOptions }\n```\n\n\n## How to work?\n\n- For `node` `electron-main` `electron-preload`, the plugin only changes a few preset configurations.\n\n- `electron-renderer` with `nodeIntegration`.\n\n  ```\n  ┏————————————————————————————————————————┓                    ┏—————————————————┓\n  │ import { ipcRenderer } from 'electron' │                    │ Vite dev server │\n  ┗————————————————————————————————————————┛                    ┗—————————————————┛\n                     │                                                   │\n                     │ 1. HTTP(Request): electron module                 │\n                     │ ————————————————————————————————————————————————\u003e │\n                     │                                                   │\n                     │                                                   │\n                     │ 2. Intercept in load-hook(Plugin)                 │\n                     │ 3. Generate a virtual ESM module(electron)        │\n                     │    ↓                                              │\n                     │    const { ipcRenderer } = require('electron')    │\n                     │    export { ipcRenderer }                         │\n                     │                                                   │\n                     │                                                   │\n                     │ 4. HTTP(Response): electron module                │\n                     │ \u003c———————————————————————————————————————————————— │\n                     │                                                   │\n  ┏————————————————————————————————————————┓                    ┏—————————————————┓\n  │ import { ipcRenderer } from 'electron' │                    │ Vite dev server │\n  ┗————————————————————————————————————————┛                    ┗—————————————————┛\n  ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvite-plugin%2Fvite-plugin-target","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvite-plugin%2Fvite-plugin-target","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvite-plugin%2Fvite-plugin-target/lists"}