Notes/forge.config.cjs

116 lines
3.7 KiB
JavaScript
Raw Permalink Normal View History

2025-01-09 18:07:02 +02:00
const path = require("path");
const fs = require("fs-extra");
2024-08-05 18:47:57 +02:00
const APP_NAME = "TriliumNext Notes";
module.exports = {
2025-01-09 18:07:02 +02:00
packagerConfig: {
executableName: "trilium",
name: APP_NAME,
overwrite: true,
asar: true,
icon: "./images/app-icons/icon",
extraResource: [
// Moved to root
...getExtraResourcesForPlatform(),
2025-01-09 18:07:02 +02:00
// Moved to resources (TriliumNext Notes.app/Contents/Resources on macOS)
"translations/",
"node_modules/@highlightjs/cdn-assets/styles"
],
afterComplete: [
(buildPath, _electronVersion, platform, _arch, callback) => {
const extraResources = getExtraResourcesForPlatform();
for (const resource of extraResources) {
const baseName = path.basename(resource);
let sourcePath;
if (platform === "darwin") {
sourcePath = path.join(buildPath, `${APP_NAME}.app`, "Contents", "Resources", baseName);
} else {
sourcePath = path.join(buildPath, "resources", baseName);
}
let destPath;
2024-08-05 18:47:57 +02:00
2025-01-09 18:07:02 +02:00
if (baseName !== "256x256.png") {
destPath = path.join(buildPath, baseName);
} else {
destPath = path.join(buildPath, "icon.png");
}
// Copy files from resources folder to root
fs.move(sourcePath, destPath)
.then(() => callback())
.catch((err) => callback(err));
}
}
]
2024-08-05 18:47:57 +02:00
},
2025-01-09 18:07:02 +02:00
rebuildConfig: {
force: true
2024-08-05 18:47:57 +02:00
},
2025-01-09 18:07:02 +02:00
makers: [
{
name: "@electron-forge/maker-deb",
config: {
options: {
icon: "./images/app-icons/png/128x128.png",
desktopTemplate: path.resolve("./bin/electron-forge/desktop.ejs")
}
}
},
{
name: "@electron-forge/maker-squirrel",
config: {
iconUrl: "https://raw.githubusercontent.com/TriliumNext/Notes/develop/images/app-icons/icon.ico",
setupIcon: "./images/app-icons/icon.ico",
loadingGif: "./images/app-icons/win/setup-banner.gif"
}
},
{
name: "@electron-forge/maker-dmg",
config: {
icon: "./images/app-icons/icon.icns"
}
},
{
name: "@electron-forge/maker-zip",
config: {
options: {
iconUrl: "https://raw.githubusercontent.com/TriliumNext/Notes/develop/images/app-icons/icon.ico",
icon: "./images/app-icons/icon.ico"
}
}
2024-08-05 18:47:57 +02:00
}
2025-01-09 18:07:02 +02:00
],
plugins: [
{
name: "@electron-forge/plugin-auto-unpack-natives",
config: {}
}
]
};
2024-08-05 18:47:57 +02:00
function getExtraResourcesForPlatform() {
2025-01-09 18:07:02 +02:00
let resources = ["dump-db/", "./bin/tpl/anonymize-database.sql"];
const scripts = ["trilium-portable", "trilium-safe-mode", "trilium-no-cert-check"];
switch (process.platform) {
case "win32":
for (const script of scripts) {
resources.push(`./bin/tpl/${script}.bat`);
}
break;
case "darwin":
break;
case "linux":
resources.push("images/app-icons/png/256x256.png");
for (const script of scripts) {
resources.push(`./bin/tpl/${script}.sh`);
}
break;
default:
break;
}
2024-08-05 18:47:57 +02:00
2025-01-09 18:07:02 +02:00
return resources;
}