Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,6 @@
"typescript/no-require-imports": "off"
}
},
{
"files": [
"packages/api/core/spec/**/*.ts",
"packages/maker/*/src/Maker*.ts"
],
"rules": {
"typescript/no-require-imports": "off"
}
},
{
"files": ["packages/plugin/webpack/spec/fixtures/**/*.js"],
"rules": {
Expand Down
21 changes: 15 additions & 6 deletions packages/api/cli/src/electron-forge-make.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import url from 'node:url';

import { initializeProxy } from '@electron/get';
import { api, MakeOptions } from '@electron-forge/core';
import { resolveWorkingDir } from '@electron-forge/core-utils';
Expand Down Expand Up @@ -54,12 +56,19 @@ export async function getMakeOptions(): Promise<MakeOptions> {
return makeOpts;
}

if (require.main === module) {
(async () => {
const makeOpts = await getMakeOptions();
// NOTE: this is a hack that exists because Node.js didn't add import.meta.main
// support until 22.18.0. We should bump up the engines and get that fix before
// we go to stable.
// ref https://2ality.com/2022/07/nodejs-esm-main.html
if (import.meta.url.startsWith('file:')) {
const modulePath = url.fileURLToPath(import.meta.url);
if (process.argv[1] === modulePath) {
(async () => {
const makeOpts = await getMakeOptions();

initializeProxy();
initializeProxy();

await api.make(makeOpts);
})();
await api.make(makeOpts);
})();
}
}
46 changes: 26 additions & 20 deletions packages/api/core/spec/slow/make.slow.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,44 +119,50 @@ describe('Make', () => {
dir,
outDir,
overrideTargets: [
require.resolve('@electron-forge/maker-zip'),
require.resolve('@electron-forge/maker-dmg'),
import.meta.resolve('@electron-forge/maker-zip'),
import.meta.resolve('@electron-forge/maker-dmg'),
],
platform: 'mas',
}),
).resolves.toHaveLength(2);
},
);

describe('with Makers', () => {
describe('with Makers', async () => {
if (process.platform !== 'win32') {
process.env.DISABLE_SQUIRREL_TEST = 'true';
}

const allMakerNames = [
'@electron-forge/maker-appx',
'@electron-forge/maker-deb',
'@electron-forge/maker-dmg',
'@electron-forge/maker-flatpak',
'@electron-forge/maker-msix',
'@electron-forge/maker-rpm',
'@electron-forge/maker-snap',
'@electron-forge/maker-squirrel',
'@electron-forge/maker-wix',
'@electron-forge/maker-zip',
];

const allMakers = await Promise.all(
allMakerNames.map(async (name) => ({
path: import.meta.resolve(name),
module: await import(name),
})),
);

function getMakers(good: boolean) {
const allMakers = [
'@electron-forge/maker-appx',
'@electron-forge/maker-deb',
'@electron-forge/maker-dmg',
'@electron-forge/maker-flatpak',
'@electron-forge/maker-msix',
'@electron-forge/maker-rpm',
'@electron-forge/maker-snap',
'@electron-forge/maker-squirrel',
'@electron-forge/maker-wix',
'@electron-forge/maker-zip',
];
return allMakers
.map((maker) => require.resolve(maker))
.filter((makerPath) => {
const MakerClass = require(makerPath).default;
const maker = new MakerClass();
.filter(({ module }) => {
const maker = new module.default();
return (
maker.isSupportedOnCurrentPlatform() === good &&
maker.externalBinariesExist() === good
);
})
.map((makerPath) => () => {
.map(({ path: makerPath }) => () => {
const makerDefinition = {
name: makerPath,
platforms: [process.platform],
Expand Down
2 changes: 1 addition & 1 deletion packages/maker/base/src/Maker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ export default abstract class Maker<C> implements IForgeMaker {
*/
isInstalled(module: string): boolean {
try {
require(module);
import.meta.resolve(module);
return true;
} catch {
// Package doesn't exist -- must not be installable on this platform
Expand Down
Loading