Перейти к файлу
dependabot[bot] 22da923ba1
build(deps): bump micromatch from 4.0.2 to 4.0.8 (#50)
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.2 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.2...4.0.8)

---
updated-dependencies:
- dependency-name: micromatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-03 15:13:00 -07:00
.circleci chore: bump electronjs/node in .circleci/config.yml to 2.3.0 (#45) 2024-06-12 10:37:25 -03:00
.github build(deps): bump amannn/action-semantic-pull-request (#47) 2024-07-02 16:32:29 -07:00
.husky
src build: fix bin tsc 2024-03-25 10:33:59 -07:00
test feat: add strict mode to hard fail when new fuses added without explicit config (#38) 2024-03-25 10:16:38 -07:00
.gitignore
.prettierrc.json
.releaserc.json
LICENSE
README.md feat: add strict mode to hard fail when new fuses added without explicit config (#38) 2024-03-25 10:16:38 -07:00
jest.config.js
jest.global.ts
package.json chore: add `engines.node` requirement (#48) 2024-07-25 18:18:12 -07:00
tsconfig.json
yarn.lock build(deps): bump micromatch from 4.0.2 to 4.0.8 (#50) 2024-09-03 15:13:00 -07:00

README.md

@electron/fuses

Flip Electron Fuses and customize your packaged build of Electron

CircleCI npm version

Usage

Via JavaScript

import { flipFuses, FuseVersion, FuseV1Options } from '@electron/fuses';

// During your build / package process
await flipFuses(
  require('electron'), // Returns the path to the electron binary
  {
    version: FuseVersion.V1,
    [FuseV1Options.RunAsNode]: false, // Disables ELECTRON_RUN_AS_NODE
    [FuseV1Options.EnableCookieEncryption]: true, // Enables cookie encryption
    [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false, // Disables the NODE_OPTIONS environment variable
    [FuseV1Options.EnableNodeCliInspectArguments]: false, // Disables the --inspect and --inspect-brk family of CLI options
    [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true, // Enables validation of the app.asar archive on macOS
    [FuseV1Options.OnlyLoadAppFromAsar]: true, // Enforces that Electron will only load your app from "app.asar" instead of its normal search paths
    [FuseV1Options.LoadBrowserProcessSpecificV8Snapshot]: true, // Loads V8 Snapshot from `browser_v8_context_snapshot.bin` for the browser process
    [FuseV1Options.GrantFileProtocolExtraPrivileges]: true, // Grants the file protocol extra privileges
  },
);

From the command line

$ npx @electron/fuses read --app /Applications/Foo.app
$ npx @electron/fuses write --app /Applications/Foo.app <...key=on/off>

Apple Silicon

For arm64 macOS builds of your app if you are not immediately codesigning your app after flipping the fuses you will need to pass resetAdHocDarwinSignature: true to the flipFuses method. Otherwise the app will refuse to launch with code signature validation errors. This is a new security measure on Apple Silicon devices.

import { flipFuses, FuseVersion, FuseV1Options } from '@electron/fuses';

await flipFuses(
  require('electron'),
  {
    version: FuseVersion.V1,
    resetAdHocDarwinSignature: targetPlatform === 'darwin' && targetArch === 'arm64',
    [FuseV1Options.RunAsNode]: false,
  },
);

New Fuses

If you want to ensure you provide a config for every fuse, even newly added fuses during Electron upgrades you can set the strictlyRequireAllFuses option to true. This will hard fail the build if you are on a version of @electron/fuses that doesn't have configuration options for every fuse in the Electron binary you are targetting or if you don't provide a configuration for a specific fuse present in the Electron binary you are targetting.

import { flipFuses, FuseVersion, FuseV1Options } from '@electron/fuses';

await flipFuses(
  require('electron'),
  {
    version: FuseVersion.V1,
    strictlyRequireAllFuses: true,
    [FuseV1Options.RunAsNode]: false,
  },
);