npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@usrz/vite-electron

v0.0.1

Published

Vite environment for Electron applications

Readme

Electron environment for Vite

... A word of caution!

This project mainly explores the new Vite environments. While it's functional — providing hot reload for main, preload, and renderer scripts — it might not work in all scenarios.

Feedback, patches, and contributions are always welcome!

This package provides opinionated helpers to build and run Electron apps with Vite. It exports a dev environment that launches Electron during vite dev, plus small helpers to set up "main", "preload", and "renderer" environments, and a wrapper to define a complete Vite config with sensible defaults.

Super quick-start

If you want a quick-start template, the easiest way to start is to create a new project, install this package, and run the vite-electron-init script:

# Create a new project repo
mkdir my-electron-project
cd my-electron-project

# Initialize a simple package
npm init -y
# Ensure ESM and set Electron's main entry point
npm pkg set type=module main="out/main/index.js"

# Install this little package
npm install '@usrz/vite-electron'

# Scaffold the basic structure from our template
npx vite-electron-init

# Enjoy!
npx vite

Configuring Vite

Using this is as easy as providing a default configuration in vite.config.ts:

import { defineElectronConfig } from '@usrz/vite-electron'

export default defineElectronConfig({
  clearScreen: false,
  plugins: [ vue() ],
  /* ... */
})

The defaults for your project are configured as follows:

  • the main script lives in ./src/main/index.ts
  • the preload script lives in ./src/preload/index.ts
  • the renderer script lives in ./src/renderer/index.ts
  • the HTML entry file is ./index.html
  • all build output is written to ./out

To enable hot reload, the ELECTRON_RENDERER_URL environment variable is provided to the main script. When creating a window, a minimal setup looks like this:

const mainWindow = new BrowserWindow({
  webPreferences: {
    // This is our preload script, resolved relative to this file
    preload: path.join(import.meta.dirname, '../preload/index.js'),
  },
})

// Use the Vite dev server URL if it exists, for development, otherwise load
// the local "index.html" file, resolved relative to this file
if (process.env['ELECTRON_RENDERER_URL']) {
  await mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL'])
} else {
  await mainWindow.loadFile(path.join(import.meta.dirname, '../renderer/index.html'))
}

More details are available in the reference and API documentation.