• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

electron / fiddle / 14365309703

09 Apr 2025 07:22PM UTC coverage: 87.224% (-0.2%) from 87.472%
14365309703

Pull #1695

github

web-flow
Merge 15a759738 into 53057ba0f
Pull Request #1695: feat: add run from ASAR button

995 of 1244 branches covered (79.98%)

Branch coverage included in aggregate %.

7 of 11 new or added lines in 2 files covered. (63.64%)

33 existing lines in 2 files now uncovered.

3777 of 4227 relevant lines covered (89.35%)

34.58 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

79.31
/src/renderer/transforms/forge.ts
1
import { Files, PACKAGE_NAME, RunnableVersion } from '../../interfaces';
3✔
2
import { getForgeVersion } from '../utils/get-package';
3✔
3

4
/**
5
 * This transform turns the files into an electron-forge
6
 * project.
7
 */
8
export async function forgeTransform(
3✔
9
  files: Files,
10
  version?: RunnableVersion,
11
): Promise<Files> {
12
  if (files.get(PACKAGE_NAME)) {
3✔
13
    try {
3✔
14
      const parsed = JSON.parse(files.get(PACKAGE_NAME)!);
3✔
15

16
      parsed.config ||= {};
2✔
17
      parsed.devDependencies ||= {};
2✔
18
      parsed.license ||= 'MIT';
2✔
19
      parsed.scripts ||= {};
2✔
20
      const { config, devDependencies, scripts } = parsed;
2✔
21

22
      // devDependencies
23
      const forgeVersion = getForgeVersion();
2✔
24
      devDependencies['@electron-forge/cli'] = forgeVersion;
2✔
25
      devDependencies['@electron-forge/maker-deb'] = forgeVersion;
2✔
26
      devDependencies['@electron-forge/maker-rpm'] = forgeVersion;
2✔
27
      devDependencies['@electron-forge/maker-squirrel'] = forgeVersion;
2✔
28
      devDependencies['@electron-forge/maker-zip'] = forgeVersion;
2✔
29

30
      // Scripts
31
      scripts.start = 'electron-forge start';
2✔
32
      scripts.package = 'electron-forge package';
2✔
33
      scripts.make = 'electron-forge make';
2✔
34
      scripts.publish = 'electron-forge publish';
2✔
35
      scripts.lint = 'echo "No linting configured"';
2✔
36

37
      // electron-forge config
38
      config.forge = {};
2✔
39
      config.forge.packagerConfig = {};
2✔
40

41
      const nightlyVersion = devDependencies['electron-nightly'];
2✔
42
      if (nightlyVersion) {
2✔
43
        // Fetch forced ABI for nightly.
44
        const { modules } = (await window.ElectronFiddle.getReleaseInfo(
1✔
45
          nightlyVersion,
46
        ))!;
47

48
        config.forge.electronRebuildConfig = {
1✔
49
          forceABI: parseInt(modules.toString().trim()),
50
        };
51
      }
52

53
      // Package local version if available.
54
      if (version?.localPath) {
2!
UNCOV
55
        devDependencies['@electron-forge/plugin-local-electron'] = forgeVersion;
×
UNCOV
56
        config.forge.plugins = [
×
57
          {
58
            name: '@electron-forge/plugin-local-electron',
59
            config: {
60
              electronPath: version.localPath,
61
            },
62
          },
63
        ];
64

65
        // Replace electron dep in package.json with a legitimate
66
        // released version so it doesn't error on npm install.
UNCOV
67
        if (parsed.devDependencies.electron) {
×
UNCOV
68
          const latest = await window.ElectronFiddle.getLatestStable();
×
UNCOV
69
          parsed.devDependencies.electron = latest?.version;
×
70
        }
71
      }
72

73
      // electron-forge makers
74
      config.forge.makers = [
2✔
75
        {
76
          name: '@electron-forge/maker-squirrel',
77
        },
78
        {
79
          name: '@electron-forge/maker-zip',
80
          platforms: ['darwin'],
81
        },
82
        {
83
          name: '@electron-forge/maker-deb',
84
          config: {},
85
        },
86
        {
87
          name: '@electron-forge/maker-rpm',
88
          config: {},
89
        },
90
      ];
91

92
      files.set(PACKAGE_NAME, JSON.stringify(parsed, undefined, 2));
2✔
93
    } catch (error) {
94
      console.warn(`Forge Transform: Failed to parse package.json`, { error });
1✔
95
    }
96
  }
97

98
  return files;
3✔
99
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc