Files
Silk-Fly-Launcher/forge.config.cjs

129 lines
4.1 KiB
JavaScript

const { FusesPlugin } = require("@electron-forge/plugin-fuses");
const { FuseV1Options, FuseVersion } = require("@electron/fuses");
const fs = require("fs/promises");
const path = require("path");
const packageJson = require("./package.json");
const buildTarget = process.env.BUILD_TARGET || "all";
const makers = [];
if (buildTarget == "msi" || buildTarget == "all") {
makers.push({
name: "@electron-forge/maker-wix",
config: {
icon: "./assets/icon.ico",
ui: { enabled: true, chooseDirectory: true },
upgradeCode: "e3bb759f-c2b2-4545-bb7b-35bed5be4cd5",
},
});
}
if (buildTarget == "zip" || buildTarget == "all") {
makers.push({
name: "@electron-forge/maker-zip",
platforms: ["win32", "linux"],
});
}
if (buildTarget == "deb" || buildTarget == "all") {
makers.push({
name: "@electron-forge/maker-deb",
config: {
options: {
bin: packageJson.productName,
name: packageJson.productName,
icon: "./assets/icon.png",
maintainer: "GabiZar",
homepage: "https://github.com/Gabi-Zar/Silk-Fly-Launcher",
},
},
});
}
async function fileExists(filePath) {
try {
await fs.access(filePath);
return true;
} catch {
return false;
}
}
module.exports = {
packagerConfig: {
asar: true,
extraResource: ["node_modules/7zip-bin"],
ignore: [
/^\/?test/,
/^\/?docs/,
/^\/?\.vscode/,
/assets\/raw/,
/assets\/github/,
/7zip-bin\/win/,
/7zip-bin\/mac/,
/7zip-bin\/linux/,
/.*\.md$/,
/.*\.map$/,
/.*\.ts$/,
/.*\.prettierignore$/,
/.*\.gitignore$/,
/.*\.ignore$/,
/.package-lock.json/,
],
icon: "./assets/icon",
prune: true,
},
rebuildConfig: {},
makers: makers,
hooks: {
postPackage: async (forgeConfig, options) => {
if (!(options.outputPaths instanceof Array)) {
return;
}
const localesPath = path.join(options.outputPaths[0], "locales");
const locales = await fs.readdir(localesPath);
for (const locale of locales) {
if (locale != "en-US.pak") {
const localePath = path.join(localesPath, locale);
await fs.unlink(localePath);
}
}
},
postMake: async (forgeConfig, makeResults) => {
if (buildTarget == "msi" || buildTarget == "all") {
const outDir = path.join(__dirname, "out", "make", "wix", "x64");
if (!(await fileExists(outDir))) {
return;
}
const files = await fs.readdir(outDir, { recursive: true });
const msiFile = path.join(
outDir,
files.find((file) => file.endsWith(".msi")),
);
const newName = `${makeResults[0].packageJSON.productName}-${makeResults[0].platform}-${makeResults[0].arch}-${makeResults[0].packageJSON.version}.msi`;
const newMsiFile = path.join(outDir, newName);
await fs.rename(msiFile, newMsiFile);
}
console.log(`successful build for ${buildTarget}`);
},
},
plugins: [
{
name: "@electron-forge/plugin-auto-unpack-natives",
config: {},
},
// Fuses are used to enable/disable various Electron functionality
// at package time, before code signing the application
new FusesPlugin({
version: FuseVersion.V1,
[FuseV1Options.RunAsNode]: false,
[FuseV1Options.EnableCookieEncryption]: true,
[FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
[FuseV1Options.EnableNodeCliInspectArguments]: false,
[FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
[FuseV1Options.OnlyLoadAppFromAsar]: true,
}),
],
};