fiddle/forge.config.ts

200 строки
6.1 KiB
TypeScript
Исходник Обычный вид История

import * as path from 'node:path';
import { FuseV1Options, FuseVersion } from '@electron/fuses';
import { FusesPlugin } from '@electron-forge/plugin-fuses';
import type { ForgeConfig } from '@electron-forge/shared-types';
import packageJson from './package.json';
import { maybeFetchContributors } from './tools/contributors';
import { populateReleases } from './tools/fetch-releases';
import { mainConfig } from './tools/webpack/webpack.main.config';
import { rendererConfig } from './tools/webpack/webpack.renderer.config';
2018-06-07 14:49:57 +03:00
const { version } = packageJson;
const iconDir = path.resolve(__dirname, 'assets', 'icons');
const root = process.cwd();
2018-12-12 10:53:04 +03:00
const commonLinuxConfig = {
categories: ['Development', 'Utility'],
icon: {
'1024x1024': path.resolve(iconDir, 'fiddle.png'),
scalable: path.resolve(iconDir, 'fiddle.svg'),
},
mimeType: ['x-scheme-handler/electron-fiddle'],
};
const requirements = path.resolve(__dirname, 'tools/certs/requirements.txt');
const config: ForgeConfig = {
2018-06-07 15:07:40 +03:00
hooks: {
generateAssets: async () => {
await Promise.all([populateReleases(), maybeFetchContributors(true)]);
},
2018-06-07 15:07:40 +03:00
},
plugins: [
{
name: '@electron-forge/plugin-webpack',
config: {
devContentSecurityPolicy:
"default-src 'none'; img-src 'self' https: data:; media-src 'none'; child-src 'self'; object-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self' https:; font-src 'self' https:;",
devServer: {
// Disallow browser from opening/reloading with HMR in development mode.
open: false,
liveReload: false,
hot: 'only',
},
mainConfig: mainConfig,
renderer: {
config: rendererConfig,
entryPoints: [
{
html: path.join(root, './static/index.html'),
js: path.join(root, './src/renderer/main.tsx'),
name: 'main_window',
preload: {
js: path.join(root, 'src/preload/preload.ts'),
},
},
],
},
},
},
new FusesPlugin({
version: FuseVersion.V1,
[FuseV1Options.RunAsNode]: false,
[FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
[FuseV1Options.EnableNodeCliInspectArguments]: false,
[FuseV1Options.OnlyLoadAppFromAsar]: true,
}),
],
2018-06-07 19:01:01 +03:00
packagerConfig: {
name: 'Electron Fiddle',
2018-06-14 16:53:16 +03:00
executableName: 'electron-fiddle',
asar: true,
2018-08-09 22:46:40 +03:00
icon: path.resolve(__dirname, 'assets', 'icons', 'fiddle'),
2018-06-14 16:53:16 +03:00
appBundleId: 'com.electron.fiddle',
usageDescription: {
Camera:
'Access is needed by certain built-in fiddles in addition to any custom fiddles that use the Camera',
Microphone:
'Access is needed by certain built-in fiddles in addition to any custom fiddles that use the Microphone',
Calendars:
'Access is needed by certain built-in fiddles in addition to any custom fiddles that may access Calendars',
Contacts:
'Access is needed by certain built-in fiddles in addition to any custom fiddles that may access Contacts',
Reminders:
'Access is needed by certain built-in fiddles in addition to any custom fiddles that may access Reminders',
},
2018-06-14 16:53:16 +03:00
appCategoryType: 'public.app-category.developer-tools',
protocols: [
{
name: 'Electron Fiddle Launch Protocol',
schemes: ['electron-fiddle'],
},
],
2018-06-14 16:53:16 +03:00
win32metadata: {
2018-08-10 02:27:07 +03:00
CompanyName: 'Electron Community',
2018-06-14 16:53:16 +03:00
OriginalFilename: 'Electron Fiddle',
},
2018-07-06 22:45:42 +03:00
osxSign: {
identity:
'Developer ID Application: OpenJS Foundation, Inc. (UY52UFTVTM)',
optionsForFile: (filePath) =>
['(Plugin).app', '(GPU).app', '(Renderer).app'].some((helper) =>
filePath.includes(helper),
)
? { requirements }
: {
entitlements: 'static/entitlements.plist',
requirements,
},
},
2018-06-07 19:01:01 +03:00
},
2018-06-06 19:41:04 +03:00
makers: [
{
2018-06-14 16:53:16 +03:00
name: '@electron-forge/maker-squirrel',
platforms: ['win32'],
config: (arch: string) => ({
name: 'electron-fiddle',
authors: 'Electron Community',
exe: 'electron-fiddle.exe',
iconUrl:
'https://raw.githubusercontent.com/electron/fiddle/0119f0ce697f5ff7dec4fe51f17620c78cfd488b/assets/icons/fiddle.ico',
loadingGif: './assets/loading.gif',
noMsi: true,
setupExe: `electron-fiddle-${version}-win32-${arch}-setup.exe`,
setupIcon: path.resolve(iconDir, 'fiddle.ico'),
signWithParams: `/sha1 ${process.env.CERT_FINGERPRINT} /tr http://timestamp.digicert.com /td SHA256 /fd SHA256`,
}),
2018-06-06 19:41:04 +03:00
},
{
2018-06-14 16:53:16 +03:00
name: '@electron-forge/maker-zip',
platforms: ['darwin'],
config: {},
2018-06-06 19:41:04 +03:00
},
{
2018-06-14 16:53:16 +03:00
name: '@electron-forge/maker-deb',
2018-12-12 10:53:04 +03:00
platforms: ['linux'],
config: commonLinuxConfig,
2018-06-06 19:41:04 +03:00
},
{
2018-06-14 16:53:16 +03:00
name: '@electron-forge/maker-rpm',
platforms: ['linux'],
config: commonLinuxConfig,
},
{
name: '@reforged/maker-appimage',
platforms: ['linux'],
config: {
options: {
categories: commonLinuxConfig.categories,
},
},
},
2018-06-07 14:49:57 +03:00
],
publishers: [
{
name: '@electron-forge/publisher-github',
config: {
repository: {
owner: 'electron',
name: 'fiddle',
},
2018-12-24 09:25:30 +03:00
draft: true,
prerelease: false,
generateReleaseNotes: true,
},
},
],
};
2019-12-04 21:44:13 +03:00
function notarizeMaybe() {
if (process.platform !== 'darwin') {
return;
}
if (!process.env.CI && !process.env.FORCE_NOTARIZATION) {
// Not in CI, skipping notarization
console.log('Not in CI, skipping notarization');
2019-12-04 21:44:13 +03:00
return;
}
if (!process.env.APPLE_ID || !process.env.APPLE_ID_PASSWORD) {
console.warn(
'Should be notarizing, but environment variables APPLE_ID or APPLE_ID_PASSWORD are missing!',
);
2019-12-04 21:44:13 +03:00
return;
}
2023-07-28 22:07:06 +03:00
config.packagerConfig!.osxNotarize = {
2019-12-04 21:44:13 +03:00
appleId: process.env.APPLE_ID,
appleIdPassword: process.env.APPLE_ID_PASSWORD,
teamId: 'UY52UFTVTM',
};
2019-12-04 21:44:13 +03:00
}
notarizeMaybe();
2019-12-04 21:44:13 +03:00
// Finally, export it
export default config;