搜索文档
electron
create-electron-rs
npm create rsbuild@latest # pnpm # pnpm create rsbuild@latest
npm i bytenode npm i electron-rs -D npm i @rsbuild/plugin-node-polyfill -D # or # pnpm i bytenode # pnpm i electron-rs -D # pnpm i @rsbuild/plugin-node-polyfill -D
// rsbuild.config.ts import { defineConfig } from '@rsbuild/core'; import { pluginReact } from '@rsbuild/plugin-react'; import { pluginNodePolyfill } from '@rsbuild/plugin-node-polyfill'; import { electronRs } from 'electron-rs'; export default defineConfig({ plugins: [pluginReact(), electronRs(), pluginNodePolyfill()] });
If you need preload , modify electronRs config like this
electronRs({ preload: {} })
// rsbuild.config.ts import { defineConfig } from '@rsbuild/core'; import { pluginVue } from '@rsbuild/plugin-vue'; import { pluginNodePolyfill } from '@rsbuild/plugin-node-polyfill'; import { electronRs } from 'electron-rs'; export default defineConfig({ plugins: [pluginVue(), electronRs(), pluginNodePolyfill()], });
mkdir electron && cd electron touch electron.ts && touch preload.ts
{ "main": "dist/electron/main.cjs", "build": { "directories": { "output": "build-electron" }, "extraResources": [], "files": [ "dist" ] } }
If you need obfuscator , modify electronRs config like this . It's only effective in the production mode.
electronRs({ obfuscator: { options: { rotateStringArray: true, stringArray: true, stringArrayThreshold: 0.75, }, excludes: [ '**/*.ts', '**/*.tsx', '**/*.d.ts', '**/node_modules/**', // '**/vendor.js' // 排除第三方库 ], }, }),
npm run dev # or # pnpm run dev
npm run build # or # pnpm run build
npm create electron-rs@latest # or pnpm # pnpm create electron-rs@latest