-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathelectron-builder.yml
More file actions
127 lines (111 loc) · 4.63 KB
/
electron-builder.yml
File metadata and controls
127 lines (111 loc) · 4.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# Keyper - electron-builder configuration
# Made with ❤️ by Pink Pixel
#
# Build targets:
# Linux → AppImage (x64/arm64) + .deb (x64/arm64)
# Windows → NSIS installer + portable (x64)
# macOS → .dmg + .zip (Intel + Apple Silicon)
#
# Run:
# npm run electron:build:linux # AppImage + deb
# npm run electron:build:win # NSIS installer + portable
# npm run electron:build:mac # DMG + zip (must build on macOS)
# npm run electron:build # current platform
appId: dev.pinkpixel.keyper
productName: Keyper
copyright: "Copyright © 2024-2026 Pink Pixel"
# Override the scoped npm package name (@pinkpixel/keyper → keyper) so
# electron-builder doesn't embed "@pinkpixel/" into output paths / filenames.
extraMetadata:
name: keyper
# ── Packaging ─────────────────────────────────────────────────────────────────
# Keep asar enabled (default) — more secure and smaller package.
# The app:// custom protocol handler in main.js reads from the asar archive
# via net.fetch(pathToFileURL(...)), which works correctly inside asar.
asar: true
directories:
output: dist-electron
buildResources: public
# Keyper is a static SPA in the renderer, but the Electron main process ships
# one native runtime dependency for local desktop SQLite support.
files:
- dist/** # compiled Vite/React output (the app itself)
- electron-dist/** # compiled Electron main + preload + CJS marker
- public/icon.png
- public/logo.png
- public/favicon.png
- package.json
# better-sqlite3 must be rebuilt against Electron's ABI during packaging.
npmRebuild: true
# Native .node binaries cannot live inside app.asar.
asarUnpack:
- node_modules/better-sqlite3/**
# ── Linux ─────────────────────────────────────────────────────────────────────
linux:
target:
- target: AppImage
arch: [x64, arm64]
- target: deb
arch: [x64, arm64]
# snap is excluded from local builds — requires snapcraft to be installed.
# Uncomment and add to target list to build in CI.
category: Development
# Use the explicit Linux icon set for desktop menus, launchers, and AppImage metadata.
icon: public/icons
# Explicit artifact names avoid the @scope/ prefix confusion
artifactName: "Keyper-${version}-${arch}.${ext}"
executableName: keyper
synopsis: Self-hosted credential manager with zero-knowledge encryption
description: >
Keyper is a self-hosted credential manager with zero-knowledge encryption,
multi-user support, and emergency recovery. Store API keys, passwords, and
secrets securely with your own Supabase database. Features AES-256-GCM
encryption, Argon2 key derivation, PWA support, and a professional-grade
security architecture.
desktop:
entry:
Name: Keyper
StartupWMClass: keyper
Comment: Self-hosted credential manager with zero-knowledge encryption
Categories: Development;Utility;
deb:
artifactName: "keyper_${version}_${arch}.deb"
depends:
- libgtk-3-0
- libnotify4
- libnss3
- libxss1
- libxtst6
- xdg-utils
- libatspi2.0-0
- libsecret-1-0
# snap config — used only in CI (GitHub Actions installs snapcraft).
# productName "Keyper" is used as the snap name automatically.
snap:
summary: Self-hosted credential manager with zero-knowledge encryption
grade: stable
confinement: strict # Keyper is a sandboxed SPA — strict confinement is fine
# ── Windows ───────────────────────────────────────────────────────────────────
win:
target:
- target: nsis
arch:
- x64
# Use a real multi-size .ico for Windows packaging and shortcuts.
icon: public/icon.ico
nsis:
oneClick: false
allowToChangeInstallationDirectory: true
createDesktopShortcut: true
createStartMenuShortcut: true
shortcutName: Keyper
installerIcon: public/icon.ico
uninstallerIcon: public/icon.ico
# ── macOS (cross-compile not supported — must build on macOS) ─────────────────
mac:
target:
- dmg
category: public.app-category.developer-tools
icon: public/icon.png # ideally a 1024×1024 PNG or .icns
# ── Do not publish automatically ──────────────────────────────────────────────
publish: null