freetube/_scripts/build.js

152 lines
2.9 KiB
JavaScript
Raw Normal View History

2020-02-16 18:30:00 +00:00
const os = require('os')
const builder = require('electron-builder')
const Platform = builder.Platform
2020-07-21 21:43:52 +00:00
const Arch = builder.Arch
2020-02-16 18:30:00 +00:00
const { name, productName } = require('../package.json')
2020-07-21 21:43:52 +00:00
const args = process.argv
2020-02-16 18:30:00 +00:00
let targets
const platform = os.platform()
2020-02-16 18:30:00 +00:00
if (platform === 'darwin') {
let arch = Arch.x64
if (args[2] === 'arm64') {
arch = Arch.arm64
}
2022-09-26 20:17:04 +00:00
targets = Platform.MAC.createTarget(['DMG','zip', '7z'], arch)
} else if (platform === 'win32') {
let arch = Arch.x64
if (args[2] === 'arm64') {
arch = Arch.arm64
}
2022-09-26 20:17:04 +00:00
targets = Platform.WINDOWS.createTarget(['nsis', 'zip', '7z', 'portable'], arch)
} else if (platform === 'linux') {
2020-07-21 21:43:52 +00:00
let arch = Arch.x64
2021-03-06 16:19:54 +00:00
if (args[2] === 'arm64') {
2020-07-21 21:43:52 +00:00
arch = Arch.arm64
}
if (args[2] === 'arm32') {
2021-03-06 16:19:54 +00:00
arch = Arch.armv7l
}
targets = Platform.LINUX.createTarget(['deb', 'zip', '7z', 'apk', 'rpm', 'AppImage', 'pacman'], arch)
2020-02-16 18:30:00 +00:00
}
const config = {
appId: `io.freetubeapp.${name}`,
2021-07-02 16:54:59 +00:00
copyright: 'Copyleft © 2020-2021 freetubeapp@protonmail.com',
2020-02-16 18:30:00 +00:00
// asar: false,
// compression: 'store',
productName,
2020-02-16 18:30:00 +00:00
directories: {
output: './build/',
},
protocols: [
{
name: "FreeTube",
schemes: [
"freetube"
]
}
],
files: [
'_icons/iconColor.*',
'icon.svg',
'./dist/**/*',
'!dist/web/*',
'!node_modules/**/*',
// renderer
'node_modules/{miniget,ytpl,ytsr}/**/*',
'!**/README.md',
'!**/*.js.map',
'!**/*.d.ts',
],
2020-02-16 18:30:00 +00:00
dmg: {
contents: [
{
path: '/Applications',
type: 'link',
x: 410,
y: 230,
},
{
type: 'file',
x: 130,
y: 230,
},
],
window: {
height: 380,
width: 540,
2020-10-10 01:05:03 +00:00
}
2020-02-16 18:30:00 +00:00
},
linux: {
2020-03-25 08:05:40 +00:00
category: 'Network',
icon: '_icons/icon.svg',
target: ['deb', 'zip', '7z', 'apk', 'rpm', 'AppImage', 'pacman'],
2020-02-16 18:30:00 +00:00
},
// See the following issues for more information
// https://github.com/jordansissel/fpm/issues/1503
// https://github.com/jgraph/drawio-desktop/issues/259
rpm: {
fpm: [`--rpm-rpmbuild-define=_build_id_links none`]
},
deb: {
depends: [
"libgtk-3-0",
"libnotify4",
"libnss3",
"libxss1",
"libxtst6",
"xdg-utils",
"libatspi2.0-0",
"libuuid1",
"libsecret-1-0"
]
},
2020-02-16 18:30:00 +00:00
mac: {
category: 'public.app-category.utilities',
2021-03-07 01:41:26 +00:00
icon: '_icons/iconMac.icns',
target: ['dmg', 'zip', '7z'],
2020-02-16 18:30:00 +00:00
type: 'distribution',
2020-10-10 01:09:23 +00:00
extendInfo: {
CFBundleURLTypes: [
'freetube'
],
CFBundleURLSchemes: [
'freetube'
]
}
2020-02-16 18:30:00 +00:00
},
win: {
icon: '_icons/icon.ico',
target: ['nsis', 'zip', '7z', 'portable'],
2020-02-16 18:30:00 +00:00
},
nsis: {
allowToChangeInstallationDirectory: true,
oneClick: false,
},
}
builder
.build({
targets,
config,
publish: 'never'
2020-02-16 18:30:00 +00:00
})
.then(m => {
console.log(m)
})
.catch(e => {
console.error(e)
})