# electron-builder-encryptor

> simple electron package encryption tool

Latest version **2.3.3** (published 2026-06-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install electron-builder-encryptor
pnpm add electron-builder-encryptor
yarn add electron-builder-encryptor
bun add electron-builder-encryptor
```

## Health

**Score 60/100 (C)** — status: active.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 2.3.3 |
| Published | 2026-06-18 |
| First published | 2022-08-09 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 13 |
| Unpacked size | 58 KB |
| Known vulnerabilities | 0 (+9 in 2 direct dependencies) |
| Install scripts | no |
| Author | dusionlike |
| Maintainers | dusion |
| Keywords | electron, simple, electron-builder, encrypt, bytenode |

## Links

- npm: https://www.npmjs.com/package/electron-builder-encryptor
- Repository: https://github.com/dusionlike/electron-builder-encryptor
- Homepage: https://github.com/dusionlike/electron-builder-encryptor#readme
- Issues: https://github.com/dusionlike/electron-builder-encryptor/issues
- npm.io page: https://npm.io/package/electron-builder-encryptor

## Dependencies (13)

- [asar](https://npm.io/package/asar.md) ^3.2.0
- [mime](https://npm.io/package/mime.md) ^3.0.0
- [tsup](https://npm.io/package/tsup.md) ^7.3.0
- [yaml](https://npm.io/package/yaml.md) ^2.1.1
- [adm-zip](https://npm.io/package/adm-zip.md) ^0.5.9
- [@babel/core](https://npm.io/package/@babel/core.md) ^7.24.3
- [original-fs](https://npm.io/package/original-fs.md) ^1.2.0
- [builder-util](https://npm.io/package/builder-util.md) ^23.4.0
- [bundle-require](https://npm.io/package/bundle-require.md) 4.0.2
- [@babel/preset-env](https://npm.io/package/@babel/preset-env.md) ^7.24.3
- [esbuild-plugin-babel](https://npm.io/package/esbuild-plugin-babel.md) ^0.2.3
- [esbuild-plugin-babel-cjs](https://npm.io/package/esbuild-plugin-babel-cjs.md) ^1.0.0
- [@babel/plugin-transform-arrow-functions](https://npm.io/package/@babel/plugin-transform-arrow-functions.md) ^7.24.1

## Alternatives

- [@gemini-wallet/core](https://npm.io/package/@gemini-wallet/core.md) — 515.6K weekly downloads
- [utility](https://npm.io/package/utility.md) — 416.6K weekly downloads
- [@primno/dpapi](https://npm.io/package/@primno/dpapi.md) — 7.2K weekly downloads
- [pi-readseek](https://npm.io/package/pi-readseek.md) — 3.7K weekly downloads
- [@emilia-protocol/verify](https://npm.io/package/@emilia-protocol/verify.md) — 1.1K weekly downloads

## Recent versions

- 2.3.3 (latest) — 2026-06-18
- 2.3.2 — 2024-11-25
- 2.3.1 — 2024-11-21
- 2.3.0 — 2024-11-21
- 2.2.2 — 2024-06-08
- 2.2.1 — 2024-05-18
- 2.2.0 — 2024-05-17
- 2.1.4 — 2024-04-27
- 2.1.3 — 2024-04-05
- 2.1.2 — 2024-03-28
- 2.1.1 — 2024-01-19
- 2.1.0 — 2023-06-15
- 2.0.0 — 2023-02-23
- 1.5.0 — 2022-10-26
- 1.4.0 — 2022-10-05
- … 18 more at https://npm.io/package/electron-builder-encryptor/versions

## README

# electron-builder-encryptor [![npm](https://img.shields.io/npm/v/electron-builder-encryptor.svg)](https://npmjs.com/package/electron-builder-encryptor)

[![ci](https://github.com/dusionlike/electron-builder-encryptor/actions/workflows/ci.yml/badge.svg)](https://github.com/dusionlike/electron-builder-encryptor/actions/workflows/ci.yml)

English | [简体中文](./README-zh-CN.md)

simple electron package encryption tool

## Examples

- [electron-builder-encryptor-demo](https://github.com/dusionlike/electron-builder-encryptor/tree/main/playground)

## Features

- 🐵 Very easy to use, just add a few lines of code
- 💚 Framework agnostic, easy to add to your existing projects
- 🤷‍♂️ It only takes effect when packaging with `electron-builder`, and does not affect development and debugging
- 🔒 Use [bytenode](https://github.com/bytenode/bytenode) to encrypt the main process and custom method to encrypt the renderer process
- 👀 Prevent tampering with the `app.asar` file

## Usage

```bash
npm i electron-builder-encryptor -D

# These 5 libraries need to be added to the project
npm i adm-zip bytenode mime original-fs yaml
```

Add `afterPack` to `electron-builder` configuration

```json5
// package.json
{
    "build": {
        "asar": true,
        "afterPack": "node_modules/electron-builder-encryptor"
    }
}
```

or

```json5
// electron-builder.json
{
    "asar": true,
    "afterPack": "node_modules/electron-builder-encryptor"
}
```

in mian process

```js
if (!app.isPackaged) {
    // address before packing
    mainWindow.loadFile('renderer/index.html')
} else {
    // address after packing
    mainWindow.loadURL('myclient://apps/index.html')
}
```

> Note: The renderer process that needs to be encrypted must be placed in the `renderer` folder under the directory where the entry file `main.js` is located

## Configuration

```ts
// encryptor.config.ts or encryptor.config.js
import { defineConfig } from 'electron-builder-encryptor'

export default defineConfig({
    /**
     * encryption key
     */
    key: 'xxx000777',
})
```

all configuration

```ts
export declare interface UserConfig {
    /**
     * encryption key
     */
    key?: string
    /**
     * renderer protocol scheme
     * @default 'myclient'
     */
    protocol?: string
    /**
     * electron custom schemes to be registered with options.
     * @default
     * {standard: true, secure: true, bypassCSP: true, allowServiceWorkers: true, supportFetchAPI: true, corsEnabled: true, stream: true}
     */
    privileges?: Privileges
    /**
     * preload.js directory, with the program execution directory as the root node
     * @default preload.js
     */
    preload?: string | string[]
    renderer?: {
        /**
         * renderer entry directory, with the program execution directory as the root node
         * @default 'renderer'
         */
        entry: string
        /**
         * The encrypted storage path of the rendering process, with the program execution directory as the root node
         * @default 'resources/renderer.pkg'
         */
        output: string
    }
    /**
     * Synchronously detect whether the program has been tampered with when starting the app
     */
    syncValidationChanges?: boolean
    /**
     * Automatically run the renderer process after the main process is started. After setting it to false, you can use the __runRenderer() method to start it manually.
     * @default true
     */
    autoRunRenderer?: boolean
}
```

## Migrating from v0.x

In order to update `renderer` and `mian` separately, 1.x separates the encrypted renderer.pkg by default. If you need to restore the behavior of 0.x, you can set `renderer.output` to ''

```ts
export default defineConfig({
    renderer: {
        entry: 'renderer',
        output: ''
    }
})
```

> When `package.json` exists in the `renderer` folder, the `renderer.yml` file will be generated in the packaged `renderer.pkg` directory

## License

[MIT](./LICENSE) License

---
_Source: https://npm.io/package/electron-builder-encryptor · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
