TidGi-Desktop/dist.js

105 lines
2.5 KiB
JavaScript

/* eslint-disable no-console */
const builder = require('electron-builder');
const { notarize } = require('electron-notarize');
const semver = require('semver');
const packageJson = require('./package.json');
const { Arch, Platform } = builder;
console.log(`Machine: ${process.platform}`);
let targets;
switch (process.platform) {
case 'darwin': {
targets = Platform.MAC.createTarget();
break;
}
case 'win32': {
targets = Platform.WINDOWS.createTarget(['nsis'], Arch.x64);
break;
}
default:
case 'linux': {
targets = Platform.LINUX.createTarget(['AppImage', 'snap'], Arch.x64);
break;
}
}
const opts = {
targets,
config: {
appId: 'com.singlebox.app',
productName: 'Singlebox',
asar: true,
files: [
'!tests/**/*',
'!docs/**/*',
'!template/**/*',
],
protocols: [
{
name: 'HTTPS Protocol',
schemes: ['https'],
},
{
name: 'HTTP Protocol',
schemes: ['http'],
},
{
name: 'Mailto Protocol',
schemes: ['mailto'],
},
],
directories: {
buildResources: 'build-resources',
},
mac: {
category: 'public.app-category.productivity',
hardenedRuntime: true,
gatekeeperAssess: false,
entitlements: 'build-resources/entitlements.mac.plist',
entitlementsInherit: 'build-resources/entitlements.mac.plist',
darkModeSupport: true,
},
linux: {
category: 'Utility',
packageCategory: 'utils',
},
snap: {
publish: [
{
provider: 'snapStore',
channels: [semver.prerelease(packageJson.version) ? 'edge' : 'stable'],
},
'github',
],
},
afterSign: (context) => {
const shouldNotarize = process.platform === 'darwin' && context.electronPlatformName === 'darwin' && process.env.CI_BUILD_TAG;
if (!shouldNotarize) return null;
console.log('Notarizing app...');
// https://kilianvalkhof.com/2019/electron/notarizing-your-electron-application/
const { appOutDir } = context;
const appName = context.packager.appInfo.productFilename;
return notarize({
appBundleId: 'com.singlebox.app',
appPath: `${appOutDir}/${appName}.app`,
appleId: process.env.APPLE_ID,
appleIdPassword: process.env.APPLE_ID_PASSWORD,
});
},
},
};
builder.build(opts)
.then(() => {
console.log('build successful');
})
.catch((err) => {
console.log(err);
process.exit(1);
});