Skip to content
This repository was archived by the owner on Jun 24, 2025. It is now read-only.

Commit e5e92c8

Browse files
committed
add electron-forge for all platforms
1 parent 5f6aba8 commit e5e92c8

File tree

10 files changed

+2200
-142
lines changed

10 files changed

+2200
-142
lines changed

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,7 @@
1111
"[jsonc]": {
1212
"editor.defaultFormatter": "vscode.json-language-features"
1313
},
14+
"[javascript]": {
15+
"editor.defaultFormatter": "vscode.typescript-language-features"
16+
},
1417
}

bin/build-win-x64.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ fi
1616

1717
echo "Packaging windows x64 electron build"
1818

19-
./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=win32 --arch=x64 --overwrite --icon=images/app-icons/win/icon.ico
19+
./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=win32 --arch=x64 --overwrite --icon=images/app-icons/icon.ico
2020

2121
BUILD_DIR=./dist/trilium-windows-x64
2222
rm -rf $BUILD_DIR

bin/copy-trilium.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,14 @@ cp -R "$script_dir/../build/src" "$DIR"
4444
cp "$script_dir/../build/electron.js" "$DIR"
4545

4646
# run in subshell (so we return to original dir)
47-
(cd $DIR && npm install --omit=dev)
47+
(cd $DIR && npm install --omit=dev && npx electron-rebuild)
4848

4949
if [[ -d "$DIR"/node_modules ]]; then
5050
# cleanup of useless files in dependencies
5151
for d in 'image-q/demo' \
5252
'@excalidraw/excalidraw/dist/excalidraw-assets-dev' '@excalidraw/excalidraw/dist/excalidraw.development.js' '@excalidraw/excalidraw/dist/excalidraw-with-preact.development.js' \
5353
'mermaid/dist/mermaid.js' \
5454
'boxicons/svg' 'boxicons/node_modules/react'/* \
55-
'better-sqlite3/Release' 'better-sqlite3/deps/sqlite3.tar.gz' 'better-sqlite3/deps/sqlite3' \
5655
'@jimp/plugin-print/fonts' 'jimp/browser' 'jimp/fonts'; do
5756
[[ -e "$DIR"/node_modules/"$d" ]] && rm -r "$DIR"/node_modules/"$d"
5857
done

bin/create-icons.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ done
3939
icnsutil compose -f "mac/icon.icns" ./mac/*.png
4040

4141
# Build Windows icon
42-
magick -background none "../icon-color.svg" -define icon:auto-resize=16,32,48,64,128,256 "./win/icon.ico"
42+
magick -background none "../icon-color.svg" -define icon:auto-resize=16,32,48,64,128,256 "./icon.ico"
4343

4444
# Build Squirrel splash image
4545
magick "./png/256x256.png" -background "#ffffff" -gravity center -extent 640x480 "./win/setup-banner.gif"

forge.config.cjs

Lines changed: 75 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,65 @@
1+
const path = require('path');
2+
const fs = require('fs-extra');
3+
14
module.exports = {
25
packagerConfig: {
6+
executableName: "trilium",
7+
name: 'trilium',
8+
overwrite: true,
39
asar: true,
410
// icon will break once we add .dmg support, since the .ico & .icns have to be in same dir (see https://www.electronforge.io/guides/create-and-add-icons#windows-and-macos)
5-
icon: "./images/app-icons/win/icon"
11+
icon: "./images/app-icons/icon",
12+
extraResource: getExtraResourcesForPlatform(),
13+
files: [{ from: './bin/tpl/anonymize-database.tql', to: '.' }],
14+
afterComplete: [(buildPath, electronVersion, platform, arch, callback) => {
15+
const extraResources = getExtraResourcesForPlatform();
16+
for (const resource of extraResources) {
17+
const sourcePath = path.join(buildPath, 'resources', path.basename(resource));
18+
const destPath = path.join(buildPath, path.basename(resource));
19+
20+
// Copy files from resources folder to root
21+
fs.move(sourcePath, destPath)
22+
.then(() => callback())
23+
.catch(err => callback(err));
24+
}
25+
}]
26+
},
27+
rebuildConfig: {
28+
force: true
629
},
7-
rebuildConfig: {},
830
makers: [
31+
{
32+
name: '@electron-forge/maker-deb',
33+
config: {
34+
options: {
35+
icon: "./images/app-icons/png/128x128.png",
36+
}
37+
}
38+
},
939
{
1040
name: '@electron-forge/maker-squirrel',
1141
config: {
12-
iconUrl: "https://raw.githubusercontent.com/TriliumNext/Notes/develop/images/app-icons/win/icon.ico",
13-
setupIcon: "./images/app-icons/win/icon.ico",
42+
iconUrl: "https://raw.githubusercontent.com/TriliumNext/Notes/develop/images/app-icons/icon.ico",
43+
setupIcon: "./images/app-icons/icon.ico",
1444
loadingGif: "./images/app-icons/win/setup-banner.gif"
1545
}
46+
},
47+
{
48+
name: '@electron-forge/maker-dmg',
49+
arch: ['x64', 'arm64'],
50+
config: {
51+
icon: "./images/app-icons/mac/icon.icns",
52+
}
53+
},
54+
{
55+
name: '@electron-forge/maker-zip',
56+
config: {
57+
options: {
58+
iconUrl: "https://raw.githubusercontent.com/TriliumNext/Notes/develop/images/app-icons/icon.ico",
59+
setupIcon: "./images/app-icons/icon.ico",
60+
loadingGif: "./images/app-icons/win/setup-banner.gif"
61+
}
62+
}
1663
}
1764
],
1865
plugins: [
@@ -22,3 +69,27 @@ module.exports = {
2269
},
2370
],
2471
};
72+
73+
74+
function getExtraResourcesForPlatform() {
75+
let resources = ['dump-db/', './bin/tpl/anonymize-database.sql']
76+
const scripts = ['trilium-portable', 'trilium-safe-mode', 'trilium-no-cert-check']
77+
switch (process.platform) {
78+
case 'win32':
79+
for (const script of scripts) {
80+
resources.push(`./bin/tpl/${script}.bat`)
81+
}
82+
break;
83+
case 'darwin':
84+
break;
85+
case 'linux':
86+
for (const script of scripts) {
87+
resources.push(`./bin/tpl/${script}.sh`)
88+
}
89+
break;
90+
default:
91+
break;
92+
}
93+
94+
return resources;
95+
}
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)