Notes/forge.config.cjs

173 lines
5.7 KiB
JavaScript
Raw 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 = {
// we run electron-forge inside the ./build folder,
// to have it output to ./dist, we need to go up a directory first
outDir: "../dist",
2025-01-09 18:07:02 +02:00
packagerConfig: {
executableName: "trilium",
name: APP_NAME,
overwrite: true,
asar: true,
icon: "./images/app-icons/icon",
osxSign: {},
osxNotarize: {
appleId: process.env.APPLE_ID,
appleIdPassword: process.env.APPLE_ID_PASSWORD,
teamId: process.env.APPLE_TEAM_ID
},
2025-03-23 23:22:22 +02:00
windowsSign: {
hookModulePath: "bin\\sign-windows.cjs"
},
2025-01-09 18:07:02 +02:00
extraResource: [
// All resources should stay in Resources directory for macOS
...(process.platform === "darwin" ? [] : extraResourcesForPlatform),
// These always go in Resources
2025-01-09 18:07:02 +02:00
"translations/",
"node_modules/@highlightjs/cdn-assets/styles"
],
afterComplete: [
(buildPath, _electronVersion, platform, _arch, callback) => {
// Only move resources on non-macOS platforms
if (platform !== "darwin") {
for (const resource of extraResourcesForPlatform) {
const baseName = path.basename(resource);
const sourcePath = path.join(buildPath, "resources", baseName);
// prettier-ignore
const destPath = (baseName !== "256x256.png")
? path.join(buildPath, baseName)
: path.join(buildPath, "icon.png");
2024-08-05 18:47:57 +02:00
fs.move(sourcePath, destPath)
.then(() => callback())
.catch((err) => callback(err));
}
} else {
callback();
2025-01-09 18:07:02 +02:00
}
}
]
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: {}
}
],
hooks: {
postMake(_, makeResults) {
const outputDir = path.join(__dirname, "..", "upload");
fs.mkdirp(outputDir);
for (const makeResult of makeResults) {
for (const artifactPath of makeResult.artifacts) {
const outputPath = path.join(outputDir, path.basename(artifactPath));
console.log(`[Artifact] ${artifactPath} -> ${outputPath}`);
fs.copyFile(artifactPath, outputPath);
}
}
}
}
};
2024-08-05 18:47:57 +02:00
function getExtraResourcesForPlatform() {
const resources = [];
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;
}