Notes/forge.config.cjs

148 lines
4.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";
const extraResourcesForPlatform = getExtraResourcesForPlatform();
const baseLinuxMakerConfigOptions = {
icon: "./images/app-icons/png/128x128.png",
desktopTemplate: path.resolve("./bin/electron-forge/desktop.ejs"),
categories: ["Office", "Utility"]
};
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
...extraResourcesForPlatform,
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) => {
for (const resource of extraResourcesForPlatform) {
2025-01-09 18:07:02 +02:00
const baseName = path.basename(resource);
2024-08-05 18:47:57 +02:00
// prettier-ignore
const sourcePath = (platform === "darwin")
? path.join(buildPath, `${APP_NAME}.app`, "Contents", "Resources", baseName)
: path.join(buildPath, "resources", baseName);
// prettier-ignore
const destPath = (baseName !== "256x256.png")
? path.join(buildPath, baseName)
: path.join(buildPath, "icon.png");
2025-01-09 18:07:02 +02:00
// 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: {
...baseLinuxMakerConfigOptions
2025-01-09 18:07:02 +02:00
}
}
},
2025-02-03 23:21:27 +01:00
{
name: "@electron-forge/maker-flatpak",
config: {
options: {
...baseLinuxMakerConfigOptions,
2025-02-07 18:17:06 +02:00
id: "com.triliumnext.notes",
runtimeVersion: "24.08",
base: "org.electronjs.Electron2.BaseApp",
baseVersion: "24.08",
baseFlatpakref: "https://flathub.org/repo/flathub.flatpakrepo",
modules: [
{
name: "zypak",
sources: {
type: "git",
url: "https://github.com/refi64/zypak",
tag: "v2024.01.17"
}
}
]
2025-02-03 23:21:27 +01:00
},
}
},
2025-02-02 23:00:22 +01:00
{
name: "@electron-forge/maker-rpm",
config: {
options: {
...baseLinuxMakerConfigOptions
2025-02-02 23:00:22 +01:00
}
}
},
2025-01-09 18:07:02 +02:00
{
name: "@electron-forge/maker-squirrel",
config: {
iconUrl: "https://raw.githubusercontent.com/TriliumNext/Notes/develop/images/app-icons/icon.ico",
setupIcon: "./images/app-icons/win/setup.ico",
2025-01-09 18:07:02 +02:00
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() {
const resources = ["dump-db/", "./bin/tpl/anonymize-database.sql"];
const getScriptRessources = () => {
const scripts = ["trilium-portable", "trilium-safe-mode", "trilium-no-cert-check"];
const scriptExt = (process.platform === "win32") ? "bat" : "sh";
return scripts.map(script => `./bin/tpl/${script}.${scriptExt}`);
}
2025-01-09 18:07:02 +02:00
switch (process.platform) {
case "win32":
resources.push(...getScriptRessources())
2025-01-09 18:07:02 +02:00
break;
case "linux":
resources.push(...getScriptRessources(), "images/app-icons/png/256x256.png");
2025-01-09 18:07:02 +02:00
break;
default:
break;
}
2024-08-05 18:47:57 +02:00
2025-01-09 18:07:02 +02:00
return resources;
}