[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f2i7uic0nnfgdy":3},{"code":4,"message":5,"data":6,"timestamp":35},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":12,"hn_threads":14,"one_liner":15,"summary_md":16,"topic":17,"github_topics":20,"license":31,"homepage":32,"updated_at":33,"history":34},"mrcen3204097569-spec\u002Flean-electron-vue",17,"轻量的 Electron + Vite + Vue 3 + TypeScript 桌面应用模板，不依赖第三方集成插件 | A lean Electron + Vite + Vue 3 + TS desktop app template","TypeScript",156,3,52,[],"A readable Electron + Vite + Vue 3 + TS desktop template that skips third-party integration plugins so you can modify the build yourself.","If you want an Electron desktop starter whose build pipeline you can actually read, this template is worth a look; anyone expecting a general-purpose scaffold or turnkey packaging support should look elsewhere.\n\n## The problem\n\nStarting a Vue desktop app usually means wiring Vite to Electron, handling dev-server URLs, preload compilation and packaging. Common integration plugins hide that wiring, so when main-process reloads or build output go wrong, you debug someone else's abstraction. This template keeps the bridge to two thin custom plugins, so dev startup, build and packaging happen in code you can open and edit. The result is a runnable desktop skeleton with dev HMR, a `dist\u002F` build and a `release\u002F` installer path.\n\n## What's different\n\n`pnpm dev` starts Vite, compiles the main process with esbuild and launches Electron with `VITE_DEV_SERVER_URL`; main-process changes recompile and restart, preload changes recompile and reload the window. `pnpm build` builds the renderer and main process without invoking electron-builder, while only `pnpm dist` adds packaging. That split is practical when you want to test the app before settling installer config.\n\nSecurity defaults are explicit: context isolation and sandbox on, Node integration and `\u003Cwebview>` off, all privilege through a preload contextBridge. The window-open handler accepts only whitelisted options, restricts navigation to `app:\u002F\u002F` or the dev origin, and sends external links to the system browser. The trade-off is that every new renderer capability must be declared explicitly, which is deliberate friction rather than zero-config convenience. Auto-update uses `electron-updater` with a check-download-install dialog, but the README warns that the publish URL must be HTTPS in production; its `http:\u002F\u002F127.0.0.1` setting is for local debugging only. All dependencies sit in `devDependencies`, and the main process including `electron-updater` is bundled into `mainEntry.js`, so the installer needs no `node_modules`; when something breaks in the main process, you inspect the bundle.\n\n## Who should try it\n\nA good fit is a developer who knows Vue 3 and wants a small Electron starting point for an internal tool or single-window utility, preferring to adjust a few dozen lines of plugin code over learning an integration framework. The custom title bar, `app:\u002F\u002F` protocol and `history` routing example cover common setup needs. A poor fit is a team building a large cross-platform product needing a broad Electron plugin ecosystem, or someone unwilling to own build scripts at all, since the template deliberately makes the pipeline their responsibility.\n\n## Requirements and limitations\n\nNode.js `^20.19.0` or `>=22.12.0` and pnpm 10 are required, ruling out older Node installations. Electron 45 downloads its binary on first run, and electron-builder fetches extra tooling when packaging; on slow networks you must set the Electron and electron-builder mirrors described in the [project instructions](https:\u002F\u002Fgithub.com\u002Fmrcen3204097569-spec\u002Flean-electron-vue\u002Fblob\u002Fmain\u002FREADME.md). Tests cover only pure logic such as `app:\u002F\u002F` path validation, update YAML, window policy and CSP, not UI behavior or packaging.\n\nAuto-update also has ongoing upkeep: bump the `package.json` version, run `pnpm dist`, and upload the installer, `.blockmap` and `latest*.yml` files to an HTTPS update server. Packaging examples target Windows NSIS, macOS dmg and Linux AppImage, but the CI matrix building all three runs only on manual trigger or `v*` tags, so routine pushes do not validate every platform's installer.\n\n## HotRepo's take\n\nHotRepo has tracked this repository since 2026-10-24 and recorded a NEW-REPOSITORY board (新项目榜, TypeScript) entry at #17 with 152 total stars on 2026-10-25. That is a two-date snapshot of a two-day-old project, not daily growth, so persistence cannot yet be judged. Before committing, check whether its pinned Node and Electron versions match your target platforms' packaging needs.",{"slug":18,"name":19},"developer-tools","Developer Tools",[21,22,23,24,25,26,27,28,29,30],"desktop-app","electron","electron-builder","electron-updater","element-plus","pinia","template","typescript","vite","vue3","MIT",null,"2026-10-25T02:52:50Z",[],1792912787]