electron-builder 27.0.0-alpha.4 → 27.0.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjH,OAAO,EAAY,IAAI,EAAkB,MAAM,cAAc,CAAA;AAG7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,wBAAgB,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAQjD;AAED,MAAM,WAAW,YAAa,SAAQ,eAAe,EAAE,cAAc;CAAG;AAExE,MAAM,WAAW,UAAW,SAAQ,eAAe,EAAE,cAAc;IACjE,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,eAAe;AACf,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,CAmJ/D;AAiBD,eAAe;AACf,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAK1C;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAa7I;AAED,wBAAgB,KAAK,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAGrE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAiFnE"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAEjH,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAA;AAGnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,wBAAgB,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAQjD;AAED,MAAM,WAAW,YAAa,SAAQ,eAAe,EAAE,cAAc;CAAG;AAExE,MAAM,WAAW,UAAW,SAAQ,eAAe,EAAE,cAAc;IACjE,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,eAAe;AACf,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,CAiI/D;AAiBD,eAAe;AACf,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAK1C;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAe7I;AAED,wBAAgB,KAAK,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAGrE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAiFnE"}
package/dist/builder.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { build as _build, DIR_TARGET, Packager, Platform } from "app-builder-lib";
2
- import { addValue, Arch, archFromString } from "builder-util";
2
+ import { addTargetsForPlatform } from "app-builder-lib/internal";
3
+ import { Arch, archFromString } from "builder-util";
3
4
  import { deepAssign } from "builder-util-runtime";
4
5
  import chalk from "chalk";
5
6
  import { hideBin } from "yargs/helpers";
@@ -39,29 +40,12 @@ export function normalizeOptions(args) {
39
40
  }
40
41
  return result.length === 0 && currentIfNotSpecified ? [archFromString(process.arch)] : result;
41
42
  }
42
- let archToType = targets.get(platform);
43
- if (archToType == null) {
44
- archToType = new Map();
45
- targets.set(platform, archToType);
46
- }
47
- if (types.length === 0) {
43
+ addTargetsForPlatform(targets, platform, types, commonArch, archToType => {
48
44
  const defaultTargetValue = args.dir ? [DIR_TARGET] : [];
49
45
  for (const arch of commonArch(args.dir === true)) {
50
46
  archToType.set(arch, defaultTargetValue);
51
47
  }
52
- return;
53
- }
54
- for (const type of types) {
55
- const suffixPos = type.lastIndexOf(":");
56
- if (suffixPos > 0) {
57
- addValue(archToType, archFromString(type.substring(suffixPos + 1)), type.substring(0, suffixPos));
58
- }
59
- else {
60
- for (const arch of commonArch(true)) {
61
- addValue(archToType, arch, type);
62
- }
63
- }
64
- }
48
+ });
65
49
  }
66
50
  if (args.mac != null) {
67
51
  processTargets(Platform.MAC, args.mac);
@@ -170,7 +154,10 @@ export function coerceTypes(host) {
170
154
  export function createTargets(platforms, type, arch) {
171
155
  const targets = new Map();
172
156
  for (const platform of platforms) {
173
- const archs = arch === "all" ? (platform === Platform.MAC ? [Arch.x64, Arch.arm64, Arch.universal] : [Arch.x64, Arch.ia32]) : [archFromString(arch == null ? process.arch : arch)];
157
+ const archs =
158
+ // BREAKING: since Electron 44 removed Windows ia32 and Linux armv7l builds (and linux-ia32 zips ended at Electron 19),
159
+ // "all" expands to x64 + arm64 on non-mac platforms instead of x64 + ia32. Request ia32 explicitly to build it (Electron <= 43 only).
160
+ arch === "all" ? (platform === Platform.MAC ? [Arch.x64, Arch.arm64, Arch.universal] : [Arch.x64, Arch.arm64]) : [archFromString(arch == null ? process.arch : arch)];
174
161
  const archToType = new Map();
175
162
  targets.set(platform, archToType);
176
163
  for (const arch of archs) {
@@ -263,7 +250,7 @@ export function configureBuildCommand(yargs) {
263
250
  .group(["help", "version"], "Other:")
264
251
  .example("electron-builder -mwl", "build for macOS, Windows and Linux")
265
252
  .example("electron-builder --linux deb tar.xz", "build deb and tar.xz for Linux")
266
- .example("electron-builder --win --ia32", "build for Windows ia32")
253
+ .example("electron-builder --win --arm64", "build for Windows arm64")
267
254
  .example("electron-builder -c.extraMetadata.foo=bar", "set package.json property `foo` to `bar`")
268
255
  .example("electron-builder --config.nsis.unicode=false", "configure unicode options for NSIS");
269
256
  }
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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","sourcesContent":["import { build as _build, Configuration, DIR_TARGET, Packager, PackagerOptions, Platform } from \"app-builder-lib\"\nimport { addValue, Arch, archFromString } from \"builder-util\"\nimport { deepAssign } from \"builder-util-runtime\"\nimport chalk from \"chalk\"\nimport type { PublishOptions } from \"electron-publish\"\nimport { hideBin } from \"yargs/helpers\"\nimport * as yargs from \"yargs\"\n\nexport function createYargs(): yargs.Argv<unknown> {\n // In ESM, yargs.default is the factory function; call it to create an instance.\n // In CJS, yargs.default is already an Argv singleton.\n const factory = (yargs as any).default ?? yargs\n const instance = typeof factory?.parserConfiguration === \"function\" ? factory : factory(hideBin(process.argv))\n return (instance as unknown as yargs.Argv<unknown>).parserConfiguration({\n \"camel-case-expansion\": false,\n })\n}\n\nexport interface BuildOptions extends PackagerOptions, PublishOptions {}\n\nexport interface CliOptions extends PackagerOptions, PublishOptions {\n x64?: boolean\n ia32?: boolean\n armv7l?: boolean\n arm64?: boolean\n universal?: boolean\n\n dir?: boolean\n}\n\n/** @private */\nexport function normalizeOptions(args: CliOptions): BuildOptions {\n if (args.targets != null) {\n return args\n }\n\n const targets = new Map<Platform, Map<Arch, Array<string>>>()\n\n function processTargets(platform: Platform, types: Array<string>) {\n function commonArch(currentIfNotSpecified: boolean): Array<Arch> {\n const result = Array<Arch>()\n if (args.x64) {\n result.push(Arch.x64)\n }\n if (args.armv7l) {\n result.push(Arch.armv7l)\n }\n if (args.arm64) {\n result.push(Arch.arm64)\n }\n if (args.ia32) {\n result.push(Arch.ia32)\n }\n if (args.universal) {\n result.push(Arch.universal)\n }\n\n return result.length === 0 && currentIfNotSpecified ? [archFromString(process.arch)] : result\n }\n\n let archToType = targets.get(platform)\n if (archToType == null) {\n archToType = new Map<Arch, Array<string>>()\n targets.set(platform, archToType)\n }\n\n if (types.length === 0) {\n const defaultTargetValue = args.dir ? [DIR_TARGET] : []\n for (const arch of commonArch(args.dir === true)) {\n archToType.set(arch, defaultTargetValue)\n }\n return\n }\n\n for (const type of types) {\n const suffixPos = type.lastIndexOf(\":\")\n if (suffixPos > 0) {\n addValue(archToType, archFromString(type.substring(suffixPos + 1)), type.substring(0, suffixPos))\n } else {\n for (const arch of commonArch(true)) {\n addValue(archToType, arch, type)\n }\n }\n }\n }\n\n if (args.mac != null) {\n processTargets(Platform.MAC, args.mac)\n }\n\n if (args.linux != null) {\n processTargets(Platform.LINUX, args.linux)\n }\n\n if (args.win != null) {\n processTargets(Platform.WINDOWS, args.win)\n }\n\n if (targets.size === 0) {\n processTargets(Platform.current(), [])\n }\n\n const result: any = { ...args }\n result.targets = targets\n\n delete result.dir\n delete result.mac\n delete result.linux\n delete result.win\n\n const r = result\n delete r.m\n delete r.o\n delete r.l\n delete r.w\n delete r.windows\n delete r.macos\n delete r.$0\n delete r._\n delete r.version\n delete r.help\n delete r.c\n delete r.p\n delete r.pd\n\n delete result.ia32\n delete result.x64\n delete result.armv7l\n delete result.arm64\n delete result.universal\n\n let config = result.config\n\n // config is array when combining dot-notation values with a config file value\n // https://github.com/electron-userland/electron-builder/issues/2016\n if (Array.isArray(config)) {\n const newConfig: Configuration = {}\n for (const configItem of config) {\n if (typeof configItem === \"object\") {\n deepAssign(newConfig, configItem)\n } else if (typeof configItem === \"string\") {\n newConfig.extends = configItem\n }\n }\n\n config = newConfig\n result.config = newConfig\n }\n\n // AJV cannot coerce \"null\" string to null if string is also allowed (because null string is a valid value)\n if (config != null && typeof config !== \"string\") {\n if (config.extraMetadata != null) {\n coerceTypes(config.extraMetadata)\n }\n\n // mac.sign / mac.universal are nested option bags holding booleans and the signing identity\n // (e.g. sign.identity, sign.hardenedRuntime, universal.mergeASARs). coerceValue recurses into the\n // objects (so `-c.mac.sign.identity=null` disables code signing) and also handles `-c.mac.sign=null`.\n if (config.mac != null) {\n coerceValue(config.mac, \"sign\")\n coerceValue(config.mac, \"universal\")\n }\n\n // fix Boolean type by coerceTypes\n if (config.nsis != null) {\n coerceTypes(config.nsis)\n }\n if (config.nsisWeb != null) {\n coerceTypes(config.nsisWeb)\n }\n }\n\n if (\"project\" in r && !(\"projectDir\" in result)) {\n result.projectDir = r.project\n }\n delete r.project\n\n return result as BuildOptions\n}\n\nfunction coerceValue(host: any, key: string): void {\n const value = host[key]\n if (value === \"true\") {\n host[key] = true\n } else if (value === \"false\") {\n host[key] = false\n } else if (value === \"null\") {\n host[key] = null\n } else if (key === \"version\" && typeof value === \"number\") {\n host[key] = value.toString()\n } else if (value != null && typeof value === \"object\") {\n coerceTypes(value)\n }\n}\n\n/** @private */\nexport function coerceTypes(host: any): any {\n for (const key of Object.getOwnPropertyNames(host)) {\n coerceValue(host, key)\n }\n return host\n}\n\nexport function createTargets(platforms: Array<Platform>, type?: string | null, arch?: string | null): Map<Platform, Map<Arch, Array<string>>> {\n const targets = new Map<Platform, Map<Arch, Array<string>>>()\n for (const platform of platforms) {\n const archs =\n arch === \"all\" ? (platform === Platform.MAC ? [Arch.x64, Arch.arm64, Arch.universal] : [Arch.x64, Arch.ia32]) : [archFromString(arch == null ? process.arch : arch)]\n const archToType = new Map<Arch, Array<string>>()\n targets.set(platform, archToType)\n\n for (const arch of archs) {\n archToType.set(arch, type == null ? [] : [type])\n }\n }\n return targets\n}\n\nexport function build(rawOptions?: CliOptions): Promise<Array<string>> {\n const buildOptions = normalizeOptions(rawOptions || {})\n return _build(buildOptions, new Packager(buildOptions))\n}\n\n/**\n * @private\n */\nexport function configureBuildCommand(yargs: yargs.Argv): yargs.Argv {\n const publishGroup = \"Publishing:\"\n const buildGroup = \"Building:\"\n return yargs\n .option(\"mac\", {\n group: buildGroup,\n alias: [\"m\", \"o\", \"macos\"],\n description: `Build for macOS, accepts target list (see ${chalk.underline(\"https://www.electron.build/mac\")}).`,\n type: \"array\",\n })\n .option(\"linux\", {\n group: buildGroup,\n alias: \"l\",\n description: `Build for Linux, accepts target list (see ${chalk.underline(\"https://www.electron.build/linux\")})`,\n type: \"array\",\n })\n .option(\"win\", {\n group: buildGroup,\n alias: [\"w\", \"windows\"],\n description: `Build for Windows, accepts target list (see ${chalk.underline(\"https://www.electron.build/win\")})`,\n type: \"array\",\n })\n .option(\"x64\", {\n group: buildGroup,\n description: \"Build for x64\",\n type: \"boolean\",\n })\n .option(\"ia32\", {\n group: buildGroup,\n description: \"Build for ia32\",\n type: \"boolean\",\n })\n .option(\"armv7l\", {\n group: buildGroup,\n description: \"Build for armv7l\",\n type: \"boolean\",\n })\n .option(\"arm64\", {\n group: buildGroup,\n description: \"Build for arm64\",\n type: \"boolean\",\n })\n .option(\"universal\", {\n group: buildGroup,\n description: \"Build for universal\",\n type: \"boolean\",\n })\n .option(\"dir\", {\n group: buildGroup,\n description: \"Build unpacked dir. Useful to test.\",\n type: \"boolean\",\n })\n .option(\"publish\", {\n group: publishGroup,\n alias: \"p\",\n description: `Publish artifacts, see ${chalk.underline(\"https://www.electron.build/publish\")}`,\n choices: [\"onTag\", \"onTagOrDraft\", \"always\", \"never\", undefined as any],\n })\n .option(\"prepackaged\", {\n alias: [\"pd\"],\n group: buildGroup,\n description: \"The path to prepackaged app (to pack in a distributable format)\",\n })\n .option(\"projectDir\", {\n alias: [\"project\"],\n group: buildGroup,\n description: \"The path to project directory. Defaults to current working directory.\",\n })\n .option(\"config\", {\n alias: [\"c\"],\n group: buildGroup,\n description:\n \"The path to an electron-builder config. Defaults to `electron-builder.yml` (or `json`, or `json5`, or `js`, or `ts`), see \" +\n chalk.underline(\"https://www.electron.build/configuration\"),\n })\n .group([\"help\", \"version\"], \"Other:\")\n .example(\"electron-builder -mwl\", \"build for macOS, Windows and Linux\")\n .example(\"electron-builder --linux deb tar.xz\", \"build deb and tar.xz for Linux\")\n .example(\"electron-builder --win --ia32\", \"build for Windows ia32\")\n .example(\"electron-builder -c.extraMetadata.foo=bar\", \"set package.json property `foo` to `bar`\")\n .example(\"electron-builder --config.nsis.unicode=false\", \"configure unicode options for NSIS\")\n}\n"]}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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","sourcesContent":["import { build as _build, Configuration, DIR_TARGET, Packager, PackagerOptions, Platform } from \"app-builder-lib\"\nimport { addTargetsForPlatform } from \"app-builder-lib/internal\"\nimport { Arch, archFromString } from \"builder-util\"\nimport { deepAssign } from \"builder-util-runtime\"\nimport chalk from \"chalk\"\nimport type { PublishOptions } from \"electron-publish\"\nimport { hideBin } from \"yargs/helpers\"\nimport * as yargs from \"yargs\"\n\nexport function createYargs(): yargs.Argv<unknown> {\n // In ESM, yargs.default is the factory function; call it to create an instance.\n // In CJS, yargs.default is already an Argv singleton.\n const factory = (yargs as any).default ?? yargs\n const instance = typeof factory?.parserConfiguration === \"function\" ? factory : factory(hideBin(process.argv))\n return (instance as unknown as yargs.Argv<unknown>).parserConfiguration({\n \"camel-case-expansion\": false,\n })\n}\n\nexport interface BuildOptions extends PackagerOptions, PublishOptions {}\n\nexport interface CliOptions extends PackagerOptions, PublishOptions {\n x64?: boolean\n ia32?: boolean\n armv7l?: boolean\n arm64?: boolean\n universal?: boolean\n\n dir?: boolean\n}\n\n/** @private */\nexport function normalizeOptions(args: CliOptions): BuildOptions {\n if (args.targets != null) {\n return args\n }\n\n const targets = new Map<Platform, Map<Arch, Array<string>>>()\n\n function processTargets(platform: Platform, types: Array<string>) {\n function commonArch(currentIfNotSpecified: boolean): Array<Arch> {\n const result = Array<Arch>()\n if (args.x64) {\n result.push(Arch.x64)\n }\n if (args.armv7l) {\n result.push(Arch.armv7l)\n }\n if (args.arm64) {\n result.push(Arch.arm64)\n }\n if (args.ia32) {\n result.push(Arch.ia32)\n }\n if (args.universal) {\n result.push(Arch.universal)\n }\n\n return result.length === 0 && currentIfNotSpecified ? [archFromString(process.arch)] : result\n }\n\n addTargetsForPlatform(targets, platform, types, commonArch, archToType => {\n const defaultTargetValue = args.dir ? [DIR_TARGET] : []\n for (const arch of commonArch(args.dir === true)) {\n archToType.set(arch, defaultTargetValue)\n }\n })\n }\n\n if (args.mac != null) {\n processTargets(Platform.MAC, args.mac)\n }\n\n if (args.linux != null) {\n processTargets(Platform.LINUX, args.linux)\n }\n\n if (args.win != null) {\n processTargets(Platform.WINDOWS, args.win)\n }\n\n if (targets.size === 0) {\n processTargets(Platform.current(), [])\n }\n\n const result: any = { ...args }\n result.targets = targets\n\n delete result.dir\n delete result.mac\n delete result.linux\n delete result.win\n\n const r = result\n delete r.m\n delete r.o\n delete r.l\n delete r.w\n delete r.windows\n delete r.macos\n delete r.$0\n delete r._\n delete r.version\n delete r.help\n delete r.c\n delete r.p\n delete r.pd\n\n delete result.ia32\n delete result.x64\n delete result.armv7l\n delete result.arm64\n delete result.universal\n\n let config = result.config\n\n // config is array when combining dot-notation values with a config file value\n // https://github.com/electron-userland/electron-builder/issues/2016\n if (Array.isArray(config)) {\n const newConfig: Configuration = {}\n for (const configItem of config) {\n if (typeof configItem === \"object\") {\n deepAssign(newConfig, configItem)\n } else if (typeof configItem === \"string\") {\n newConfig.extends = configItem\n }\n }\n\n config = newConfig\n result.config = newConfig\n }\n\n // AJV cannot coerce \"null\" string to null if string is also allowed (because null string is a valid value)\n if (config != null && typeof config !== \"string\") {\n if (config.extraMetadata != null) {\n coerceTypes(config.extraMetadata)\n }\n\n // mac.sign / mac.universal are nested option bags holding booleans and the signing identity\n // (e.g. sign.identity, sign.hardenedRuntime, universal.mergeASARs). coerceValue recurses into the\n // objects (so `-c.mac.sign.identity=null` disables code signing) and also handles `-c.mac.sign=null`.\n if (config.mac != null) {\n coerceValue(config.mac, \"sign\")\n coerceValue(config.mac, \"universal\")\n }\n\n // fix Boolean type by coerceTypes\n if (config.nsis != null) {\n coerceTypes(config.nsis)\n }\n if (config.nsisWeb != null) {\n coerceTypes(config.nsisWeb)\n }\n }\n\n if (\"project\" in r && !(\"projectDir\" in result)) {\n result.projectDir = r.project\n }\n delete r.project\n\n return result as BuildOptions\n}\n\nfunction coerceValue(host: any, key: string): void {\n const value = host[key]\n if (value === \"true\") {\n host[key] = true\n } else if (value === \"false\") {\n host[key] = false\n } else if (value === \"null\") {\n host[key] = null\n } else if (key === \"version\" && typeof value === \"number\") {\n host[key] = value.toString()\n } else if (value != null && typeof value === \"object\") {\n coerceTypes(value)\n }\n}\n\n/** @private */\nexport function coerceTypes(host: any): any {\n for (const key of Object.getOwnPropertyNames(host)) {\n coerceValue(host, key)\n }\n return host\n}\n\nexport function createTargets(platforms: Array<Platform>, type?: string | null, arch?: string | null): Map<Platform, Map<Arch, Array<string>>> {\n const targets = new Map<Platform, Map<Arch, Array<string>>>()\n for (const platform of platforms) {\n const archs =\n // BREAKING: since Electron 44 removed Windows ia32 and Linux armv7l builds (and linux-ia32 zips ended at Electron 19),\n // \"all\" expands to x64 + arm64 on non-mac platforms instead of x64 + ia32. Request ia32 explicitly to build it (Electron <= 43 only).\n arch === \"all\" ? (platform === Platform.MAC ? [Arch.x64, Arch.arm64, Arch.universal] : [Arch.x64, Arch.arm64]) : [archFromString(arch == null ? process.arch : arch)]\n const archToType = new Map<Arch, Array<string>>()\n targets.set(platform, archToType)\n\n for (const arch of archs) {\n archToType.set(arch, type == null ? [] : [type])\n }\n }\n return targets\n}\n\nexport function build(rawOptions?: CliOptions): Promise<Array<string>> {\n const buildOptions = normalizeOptions(rawOptions || {})\n return _build(buildOptions, new Packager(buildOptions))\n}\n\n/**\n * @private\n */\nexport function configureBuildCommand(yargs: yargs.Argv): yargs.Argv {\n const publishGroup = \"Publishing:\"\n const buildGroup = \"Building:\"\n return yargs\n .option(\"mac\", {\n group: buildGroup,\n alias: [\"m\", \"o\", \"macos\"],\n description: `Build for macOS, accepts target list (see ${chalk.underline(\"https://www.electron.build/mac\")}).`,\n type: \"array\",\n })\n .option(\"linux\", {\n group: buildGroup,\n alias: \"l\",\n description: `Build for Linux, accepts target list (see ${chalk.underline(\"https://www.electron.build/linux\")})`,\n type: \"array\",\n })\n .option(\"win\", {\n group: buildGroup,\n alias: [\"w\", \"windows\"],\n description: `Build for Windows, accepts target list (see ${chalk.underline(\"https://www.electron.build/win\")})`,\n type: \"array\",\n })\n .option(\"x64\", {\n group: buildGroup,\n description: \"Build for x64\",\n type: \"boolean\",\n })\n .option(\"ia32\", {\n group: buildGroup,\n description: \"Build for ia32\",\n type: \"boolean\",\n })\n .option(\"armv7l\", {\n group: buildGroup,\n description: \"Build for armv7l\",\n type: \"boolean\",\n })\n .option(\"arm64\", {\n group: buildGroup,\n description: \"Build for arm64\",\n type: \"boolean\",\n })\n .option(\"universal\", {\n group: buildGroup,\n description: \"Build for universal\",\n type: \"boolean\",\n })\n .option(\"dir\", {\n group: buildGroup,\n description: \"Build unpacked dir. Useful to test.\",\n type: \"boolean\",\n })\n .option(\"publish\", {\n group: publishGroup,\n alias: \"p\",\n description: `Publish artifacts, see ${chalk.underline(\"https://www.electron.build/publish\")}`,\n choices: [\"onTag\", \"onTagOrDraft\", \"always\", \"never\", undefined as any],\n })\n .option(\"prepackaged\", {\n alias: [\"pd\"],\n group: buildGroup,\n description: \"The path to prepackaged app (to pack in a distributable format)\",\n })\n .option(\"projectDir\", {\n alias: [\"project\"],\n group: buildGroup,\n description: \"The path to project directory. Defaults to current working directory.\",\n })\n .option(\"config\", {\n alias: [\"c\"],\n group: buildGroup,\n description:\n \"The path to an electron-builder config. Defaults to `electron-builder.yml` (or `json`, or `json5`, or `js`, or `ts`), see \" +\n chalk.underline(\"https://www.electron.build/configuration\"),\n })\n .group([\"help\", \"version\"], \"Other:\")\n .example(\"electron-builder -mwl\", \"build for macOS, Windows and Linux\")\n .example(\"electron-builder --linux deb tar.xz\", \"build deb and tar.xz for Linux\")\n .example(\"electron-builder --win --arm64\", \"build for Windows arm64\")\n .example(\"electron-builder -c.extraMetadata.foo=bar\", \"set package.json property `foo` to `bar`\")\n .example(\"electron-builder --config.nsis.unicode=false\", \"configure unicode options for NSIS\")\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"clear-cache.d.ts","sourceRoot":"","sources":["../../src/cli/clear-cache.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAoChD"}
1
+ {"version":3,"file":"clear-cache.d.ts","sourceRoot":"","sources":["../../src/cli/clear-cache.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAsChD"}
@@ -1,10 +1,12 @@
1
- import { getCacheDirectory } from "app-builder-lib/internal";
1
+ import { getCacheDirectoryInternal } from "app-builder-lib/internal";
2
2
  import { log } from "builder-util";
3
3
  import { access, constants, rm } from "fs/promises";
4
4
  import { createInterface } from "node:readline/promises";
5
5
  import * as path from "path";
6
6
  export async function clearCache() {
7
- const cacheDir = getCacheDirectory({ isAvoidSystemOnWindows: false, allowEnvVarOverride: false });
7
+ // Clear the real default cache (ignore the ELECTRON_BUILDER_CACHE override, and don't avoid the
8
+ // Windows system path) so `clear-cache` targets the same dir builds actually populate.
9
+ const cacheDir = await getCacheDirectoryInternal({ isAvoidSystemOnWindows: false, allowEnvVarOverride: false });
8
10
  if (cacheDir === path.parse(cacheDir).root) {
9
11
  log.error({ cacheDir }, "cache directory resolves to a filesystem root — aborting");
10
12
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"clear-cache.js","sourceRoot":"","sources":["../../src/cli/clear-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,sBAAsB,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAA;IAEjG,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,0DAA0D,CAAC,CAAA;QACnF,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IACzD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,kDAAkD,CAAC,CAAA;QAC5E,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzD,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,iCAAiC,CAAC,CAAA;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAA;QACX,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5E,IAAI,MAAc,CAAA;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,QAAQ,UAAU,CAAC,CAAA;IAClE,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;IACD,IAAI,MAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACnF,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QACzB,OAAM;IACR,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAA;IACxC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAA;AACzC,CAAC","sourcesContent":["import { getCacheDirectory } from \"app-builder-lib/internal\"\nimport { log } from \"builder-util\"\nimport { access, constants, rm } from \"fs/promises\"\nimport { createInterface } from \"node:readline/promises\"\nimport * as path from \"path\"\n\nexport async function clearCache(): Promise<void> {\n const cacheDir = getCacheDirectory({ isAvoidSystemOnWindows: false, allowEnvVarOverride: false })\n\n if (cacheDir === path.parse(cacheDir).root) {\n log.error({ cacheDir }, \"cache directory resolves to a filesystem root — aborting\")\n return\n }\n\n try {\n await access(cacheDir, constants.F_OK | constants.W_OK)\n } catch (err: any) {\n if (err.code === \"ENOENT\") {\n log.info({ cacheDir }, \"cache directory does not exist, nothing to clear\")\n } else if (err.code === \"EACCES\" || err.code === \"EPERM\") {\n log.error({ cacheDir }, \"cache directory is not writable\")\n } else {\n throw err\n }\n return\n }\n\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n let answer: string\n try {\n answer = await rl.question(`Clear cache at ${cacheDir}? [y/N] `)\n } finally {\n rl.close()\n }\n if (answer!.trim().toLowerCase() !== \"y\" && answer!.trim().toLowerCase() !== \"yes\") {\n log.info(null, \"aborted\")\n return\n }\n\n log.info({ cacheDir }, \"clearing cache\")\n await rm(cacheDir, { recursive: true })\n log.info({ cacheDir }, \"cache cleared\")\n}\n"]}
1
+ {"version":3,"file":"clear-cache.js","sourceRoot":"","sources":["../../src/cli/clear-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,gGAAgG;IAChG,uFAAuF;IACvF,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,EAAE,sBAAsB,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAA;IAE/G,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,0DAA0D,CAAC,CAAA;QACnF,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IACzD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,kDAAkD,CAAC,CAAA;QAC5E,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzD,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,iCAAiC,CAAC,CAAA;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAA;QACX,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5E,IAAI,MAAc,CAAA;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,QAAQ,UAAU,CAAC,CAAA;IAClE,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;IACD,IAAI,MAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACnF,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QACzB,OAAM;IACR,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAA;IACxC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAA;AACzC,CAAC","sourcesContent":["import { getCacheDirectoryInternal } from \"app-builder-lib/internal\"\nimport { log } from \"builder-util\"\nimport { access, constants, rm } from \"fs/promises\"\nimport { createInterface } from \"node:readline/promises\"\nimport * as path from \"path\"\n\nexport async function clearCache(): Promise<void> {\n // Clear the real default cache (ignore the ELECTRON_BUILDER_CACHE override, and don't avoid the\n // Windows system path) so `clear-cache` targets the same dir builds actually populate.\n const cacheDir = await getCacheDirectoryInternal({ isAvoidSystemOnWindows: false, allowEnvVarOverride: false })\n\n if (cacheDir === path.parse(cacheDir).root) {\n log.error({ cacheDir }, \"cache directory resolves to a filesystem root — aborting\")\n return\n }\n\n try {\n await access(cacheDir, constants.F_OK | constants.W_OK)\n } catch (err: any) {\n if (err.code === \"ENOENT\") {\n log.info({ cacheDir }, \"cache directory does not exist, nothing to clear\")\n } else if (err.code === \"EACCES\" || err.code === \"EPERM\") {\n log.error({ cacheDir }, \"cache directory is not writable\")\n } else {\n throw err\n }\n return\n }\n\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n let answer: string\n try {\n answer = await rl.question(`Clear cache at ${cacheDir}? [y/N] `)\n } finally {\n rl.close()\n }\n if (answer!.trim().toLowerCase() !== \"y\" && answer!.trim().toLowerCase() !== \"yes\") {\n log.info(null, \"aborted\")\n return\n }\n\n log.info({ cacheDir }, \"clearing cache\")\n await rm(cacheDir, { recursive: true })\n log.info({ cacheDir }, \"cache cleared\")\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { getWindowsKitsBundle } from "app-builder-lib/internal";
2
- import { archFromString, exec, log, spawn, TmpDir, unlinkIfExists } from "builder-util";
2
+ import { exec, log, spawn, TmpDir, unlinkIfExists } from "builder-util";
3
3
  import { sanitizeFileName } from "builder-util/internal";
4
4
  import chalk from "chalk";
5
5
  import { mkdir } from "fs/promises";
@@ -14,7 +14,7 @@ export async function createSelfSignedCert(publisher) {
14
14
  log.info(chalk.bold('When asked to enter a password ("Create Private Key Password"), please select "None".'));
15
15
  try {
16
16
  await mkdir(path.dirname(tempPrefix), { recursive: true });
17
- const vendorPath = (await getWindowsKitsBundle({ winCodeSign: null, arch: archFromString(process.arch), resourcesDir: "" })).kit;
17
+ const vendorPath = (await getWindowsKitsBundle({ winCodeSign: "latest" })).kit;
18
18
  await exec(path.join(vendorPath, "makecert.exe"), ["-r", "-h", "0", "-n", `CN=${quoteString(publisher)}`, "-eku", "1.3.6.1.5.5.7.3.3", "-pe", "-sv", pvk, cer]);
19
19
  const pfx = path.join(targetDir, `${sanitizeFileName(publisher)}.pfx`);
20
20
  await unlinkIfExists(pfx);
@@ -1 +1 @@
1
- {"version":3,"file":"create-self-signed-cert.js","sourceRoot":"","sources":["../../src/cli/create-self-signed-cert.ts"],"names":[],"mappings":"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","sourcesContent":["import { getWindowsKitsBundle } from \"app-builder-lib/internal\"\nimport { archFromString, exec, log, spawn, TmpDir, unlinkIfExists } from \"builder-util\"\nimport { sanitizeFileName } from \"builder-util/internal\"\nimport chalk from \"chalk\"\nimport { mkdir } from \"fs/promises\"\nimport * as path from \"path\"\n\n/** @internal */\nexport async function createSelfSignedCert(publisher: string) {\n const tmpDir = new TmpDir(\"create-self-signed-cert\")\n const targetDir = process.cwd()\n const tempPrefix = path.join(await tmpDir.getTempDir({ prefix: \"self-signed-cert-creator\" }), sanitizeFileName(publisher))\n const cer = `${tempPrefix}.cer`\n const pvk = `${tempPrefix}.pvk`\n\n log.info(chalk.bold('When asked to enter a password (\"Create Private Key Password\"), please select \"None\".'))\n\n try {\n await mkdir(path.dirname(tempPrefix), { recursive: true })\n const vendorPath = (await getWindowsKitsBundle({ winCodeSign: null, arch: archFromString(process.arch), resourcesDir: \"\" })).kit\n await exec(path.join(vendorPath, \"makecert.exe\"), [\"-r\", \"-h\", \"0\", \"-n\", `CN=${quoteString(publisher)}`, \"-eku\", \"1.3.6.1.5.5.7.3.3\", \"-pe\", \"-sv\", pvk, cer])\n\n const pfx = path.join(targetDir, `${sanitizeFileName(publisher)}.pfx`)\n await unlinkIfExists(pfx)\n await exec(path.join(vendorPath, \"pvk2pfx.exe\"), [\"-pvk\", pvk, \"-spc\", cer, \"-pfx\", pfx])\n log.info({ file: pfx }, `created. Please see https://electron.build/code-signing how to use it to sign.`)\n\n const certLocation = \"Cert:\\\\LocalMachine\\\\TrustedPeople\"\n log.info({ file: pfx, certLocation }, `importing. Operation will be succeed only if runned from root. Otherwise import file manually.`)\n await spawn(\"powershell.exe\", [\"-NoProfile\", \"-NonInteractive\", \"-Command\", \"Import-PfxCertificate\", \"-FilePath\", `\"${pfx}\"`, \"-CertStoreLocation\", certLocation])\n } finally {\n await tmpDir.cleanup()\n }\n}\n\nexport function quoteString(s: string): string {\n if (!s.includes(\",\") && !s.includes('\"')) {\n return s\n }\n\n return `\"${s.replace(/\"/g, '\\\\\"')}\"`\n}\n"]}
1
+ {"version":3,"file":"create-self-signed-cert.js","sourceRoot":"","sources":["../../src/cli/create-self-signed-cert.ts"],"names":[],"mappings":"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","sourcesContent":["import { getWindowsKitsBundle } from \"app-builder-lib/internal\"\nimport { exec, log, spawn, TmpDir, unlinkIfExists } from \"builder-util\"\nimport { sanitizeFileName } from \"builder-util/internal\"\nimport chalk from \"chalk\"\nimport { mkdir } from \"fs/promises\"\nimport * as path from \"path\"\n\n/** @internal */\nexport async function createSelfSignedCert(publisher: string) {\n const tmpDir = new TmpDir(\"create-self-signed-cert\")\n const targetDir = process.cwd()\n const tempPrefix = path.join(await tmpDir.getTempDir({ prefix: \"self-signed-cert-creator\" }), sanitizeFileName(publisher))\n const cer = `${tempPrefix}.cer`\n const pvk = `${tempPrefix}.pvk`\n\n log.info(chalk.bold('When asked to enter a password (\"Create Private Key Password\"), please select \"None\".'))\n\n try {\n await mkdir(path.dirname(tempPrefix), { recursive: true })\n const vendorPath = (await getWindowsKitsBundle({ winCodeSign: \"latest\" })).kit\n await exec(path.join(vendorPath, \"makecert.exe\"), [\"-r\", \"-h\", \"0\", \"-n\", `CN=${quoteString(publisher)}`, \"-eku\", \"1.3.6.1.5.5.7.3.3\", \"-pe\", \"-sv\", pvk, cer])\n\n const pfx = path.join(targetDir, `${sanitizeFileName(publisher)}.pfx`)\n await unlinkIfExists(pfx)\n await exec(path.join(vendorPath, \"pvk2pfx.exe\"), [\"-pvk\", pvk, \"-spc\", cer, \"-pfx\", pfx])\n log.info({ file: pfx }, `created. Please see https://electron.build/code-signing how to use it to sign.`)\n\n const certLocation = \"Cert:\\\\LocalMachine\\\\TrustedPeople\"\n log.info({ file: pfx, certLocation }, `importing. Operation will be succeed only if runned from root. Otherwise import file manually.`)\n await spawn(\"powershell.exe\", [\"-NoProfile\", \"-NonInteractive\", \"-Command\", \"Import-PfxCertificate\", \"-FilePath\", `\"${pfx}\"`, \"-CertStoreLocation\", certLocation])\n } finally {\n await tmpDir.cleanup()\n }\n}\n\nexport function quoteString(s: string): string {\n if (!s.includes(\",\") && !s.includes('\"')) {\n return s\n }\n\n return `\"${s.replace(/\"/g, '\\\\\"')}\"`\n}\n"]}
@@ -1,13 +1,9 @@
1
1
  #! /usr/bin/env node
2
- import { computeDefaultAppDirectory, determinePackageManagerEnv, getConfig, getElectronVersion, installOrRebuild, orNullIfFileNotExist, PACKAGE_VERSION, } from "app-builder-lib/internal";
2
+ import { computeDefaultAppDirectory, createProjectMetadataLazy, determinePackageManagerEnv, getConfig, getElectronVersion, installOrRebuild, PACKAGE_VERSION, } from "app-builder-lib/internal";
3
3
  import { getArchCliNames, log, printErrorAndExit } from "builder-util";
4
- import { Lazy } from "lazy-val";
5
- import * as path from "path";
6
4
  import { fileURLToPath } from "node:url";
7
5
  import { hideBin } from "yargs/helpers";
8
6
  import * as yargs from "yargs";
9
- import _fsExtra from "fs-extra";
10
- const { readJson } = _fsExtra;
11
7
  /** @internal */
12
8
  export function configureInstallAppDepsCommand(yargs) {
13
9
  // https://github.com/yargs/yargs/issues/760
@@ -39,7 +35,7 @@ export async function installAppDeps(args) {
39
35
  }
40
36
  }
41
37
  const projectDir = process.cwd();
42
- const packageMetadata = new Lazy(() => orNullIfFileNotExist(readJson(path.join(projectDir, "package.json"))));
38
+ const packageMetadata = createProjectMetadataLazy(projectDir);
43
39
  const config = await getConfig(projectDir, null, null, packageMetadata);
44
40
  const [appDir, version] = await Promise.all([computeDefaultAppDirectory(projectDir, config.directories?.app), getElectronVersion(projectDir, config)]);
45
41
  const packageManagerEnv = determinePackageManagerEnv({ projectDir, appDir, workspaceRoot: undefined });
@@ -1 +1 @@
1
- {"version":3,"file":"install-app-deps.js","sourceRoot":"","sources":["../../src/cli/install-app-deps.ts"],"names":[],"mappings":";AAEA,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEtE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAA;AAE7B,gBAAgB;AAChB,MAAM,UAAU,8BAA8B,CAAC,KAAiB;IAC9D,4CAA4C;IAC5C,qCAAqC;IACrC,OAAO,KAAK;SACT,mBAAmB,CAAC;QACnB,sBAAsB,EAAE,KAAK;KAC9B,CAAC;SACD,MAAM,CAAC,UAAU,EAAE;QAClB,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;QACrC,OAAO,EAAE,OAAO,CAAC,QAAQ;QACzB,WAAW,EAAE,qBAAqB;KACnC,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,eAAe,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;QACxC,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;QACzD,WAAW,EAAE,iBAAiB;KAC/B,CAAC,CAAA;AACN,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAS;IAC5C,IAAI,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,kBAAkB,CAAC,CAAA;IAC5D,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,kCAAkC;QAClC,IAAI,CAAC,CAAC,CAAC,YAAY,cAAc,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAChC,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7G,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,CAAA;IACvE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAS,CAAC,0BAA0B,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IAE9J,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAA;IAEtG,sGAAsG;IACtG,MAAM,gBAAgB,CACpB,MAAM,EACN;QACE,MAAM;QACN,UAAU;QACV,aAAa,EAAE,MAAM,CAAC,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC,aAAa;KACnE,EACD;QACE,aAAa,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE;QAC/C,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,EACD,MAAM,KAAK,UAAU,EACrB,EAAE,CACH,CAAA;AACH,CAAC;AAED,SAAS,IAAI;IACX,MAAM,OAAO,GAAI,KAAa,CAAC,OAAO,IAAI,KAAK,CAAA;IAC/C,MAAM,QAAQ,GAAG,OAAO,OAAO,EAAE,mBAAmB,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9G,OAAO,cAAc,CAAC,8BAA8B,CAAC,QAAiC,CAAC,CAAC,IAAI,CAAC,CAAA;AAC/F,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACvD,GAAG,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;IACvE,IAAI,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;AACjC,CAAC","sourcesContent":["#! /usr/bin/env node\n\nimport {\n computeDefaultAppDirectory,\n determinePackageManagerEnv,\n getConfig,\n getElectronVersion,\n installOrRebuild,\n orNullIfFileNotExist,\n PACKAGE_VERSION,\n} from \"app-builder-lib/internal\"\nimport { getArchCliNames, log, printErrorAndExit } from \"builder-util\"\n\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { fileURLToPath } from \"node:url\"\nimport { hideBin } from \"yargs/helpers\"\nimport * as yargs from \"yargs\"\nimport _fsExtra from \"fs-extra\"\nconst { readJson } = _fsExtra\n\n/** @internal */\nexport function configureInstallAppDepsCommand(yargs: yargs.Argv): yargs.Argv {\n // https://github.com/yargs/yargs/issues/760\n // demandOption is required to be set\n return yargs\n .parserConfiguration({\n \"camel-case-expansion\": false,\n })\n .option(\"platform\", {\n choices: [\"linux\", \"darwin\", \"win32\"],\n default: process.platform,\n description: \"The target platform\",\n })\n .option(\"arch\", {\n choices: getArchCliNames().concat(\"all\"),\n default: process.arch === \"arm\" ? \"armv7l\" : process.arch,\n description: \"The target arch\",\n })\n}\n\n/** @internal */\nexport async function installAppDeps(args: any) {\n try {\n log.info({ version: PACKAGE_VERSION }, \"electron-builder\")\n } catch (e: any) {\n // error in dev mode without babel\n if (!(e instanceof ReferenceError)) {\n throw e\n }\n }\n\n const projectDir = process.cwd()\n const packageMetadata = new Lazy(() => orNullIfFileNotExist(readJson(path.join(projectDir, \"package.json\"))))\n const config = await getConfig(projectDir, null, null, packageMetadata)\n const [appDir, version] = await Promise.all<string>([computeDefaultAppDirectory(projectDir, config.directories?.app), getElectronVersion(projectDir, config)])\n\n const packageManagerEnv = determinePackageManagerEnv({ projectDir, appDir, workspaceRoot: undefined })\n\n // if two package.json — force full install (user wants to install/update app deps in addition to dev)\n await installOrRebuild(\n config,\n {\n appDir,\n projectDir,\n workspaceRoot: await (await packageManagerEnv.value).workspaceRoot,\n },\n {\n frameworkInfo: { version, useCustomDist: true },\n platform: args.platform,\n arch: args.arch,\n },\n appDir !== projectDir,\n {}\n )\n}\n\nfunction main() {\n const factory = (yargs as any).default ?? yargs\n const instance = typeof factory?.parserConfiguration === \"function\" ? factory : factory(hideBin(process.argv))\n return installAppDeps(configureInstallAppDepsCommand(instance as unknown as yargs.Argv).argv)\n}\n\nif (process.argv[1] === fileURLToPath(import.meta.url)) {\n log.warn(\"please use as subcommand: electron-builder install-app-deps\")\n main().catch(printErrorAndExit)\n}\n"]}
1
+ {"version":3,"file":"install-app-deps.js","sourceRoot":"","sources":["../../src/cli/install-app-deps.ts"],"names":[],"mappings":"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","sourcesContent":["#! /usr/bin/env node\n\nimport {\n computeDefaultAppDirectory,\n createProjectMetadataLazy,\n determinePackageManagerEnv,\n getConfig,\n getElectronVersion,\n installOrRebuild,\n PACKAGE_VERSION,\n} from \"app-builder-lib/internal\"\nimport { getArchCliNames, log, printErrorAndExit } from \"builder-util\"\n\nimport { fileURLToPath } from \"node:url\"\nimport { hideBin } from \"yargs/helpers\"\nimport * as yargs from \"yargs\"\n\n/** @internal */\nexport function configureInstallAppDepsCommand(yargs: yargs.Argv): yargs.Argv {\n // https://github.com/yargs/yargs/issues/760\n // demandOption is required to be set\n return yargs\n .parserConfiguration({\n \"camel-case-expansion\": false,\n })\n .option(\"platform\", {\n choices: [\"linux\", \"darwin\", \"win32\"],\n default: process.platform,\n description: \"The target platform\",\n })\n .option(\"arch\", {\n choices: getArchCliNames().concat(\"all\"),\n default: process.arch === \"arm\" ? \"armv7l\" : process.arch,\n description: \"The target arch\",\n })\n}\n\n/** @internal */\nexport async function installAppDeps(args: any) {\n try {\n log.info({ version: PACKAGE_VERSION }, \"electron-builder\")\n } catch (e: any) {\n // error in dev mode without babel\n if (!(e instanceof ReferenceError)) {\n throw e\n }\n }\n\n const projectDir = process.cwd()\n const packageMetadata = createProjectMetadataLazy(projectDir)\n const config = await getConfig(projectDir, null, null, packageMetadata)\n const [appDir, version] = await Promise.all<string>([computeDefaultAppDirectory(projectDir, config.directories?.app), getElectronVersion(projectDir, config)])\n\n const packageManagerEnv = determinePackageManagerEnv({ projectDir, appDir, workspaceRoot: undefined })\n\n // if two package.json — force full install (user wants to install/update app deps in addition to dev)\n await installOrRebuild(\n config,\n {\n appDir,\n projectDir,\n workspaceRoot: await (await packageManagerEnv.value).workspaceRoot,\n },\n {\n frameworkInfo: { version, useCustomDist: true },\n platform: args.platform,\n arch: args.arch,\n },\n appDir !== projectDir,\n {}\n )\n}\n\nfunction main() {\n const factory = (yargs as any).default ?? yargs\n const instance = typeof factory?.parserConfiguration === \"function\" ? factory : factory(hideBin(process.argv))\n return installAppDeps(configureInstallAppDepsCommand(instance as unknown as yargs.Argv).argv)\n}\n\nif (process.argv[1] === fileURLToPath(import.meta.url)) {\n log.warn(\"please use as subcommand: electron-builder install-app-deps\")\n main().catch(printErrorAndExit)\n}\n"]}
@@ -6,6 +6,8 @@ export interface ProgrammaticMigrationResult {
6
6
  readonly code: string;
7
7
  readonly changes: MigrationChange[];
8
8
  readonly warnings: string[];
9
+ /** Informational notices that are not config changes — they never affect `status` or trigger a file write. */
10
+ readonly advisories: string[];
9
11
  readonly status: ProgrammaticMigrationStatus;
10
12
  /** Set when status === "unsupported": why the config could not be auto-migrated. */
11
13
  readonly unsupportedReason?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-schema-programmatic.d.ts","sourceRoot":"","sources":["../../src/cli/migrate-schema-programmatic.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAQ1D,wBAAgB,cAAc,IAAI,GAAG,GAAG,IAAI,CAU3C;AAED,MAAM,MAAM,2BAA2B,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,CAAA;AAE9E,MAAM,WAAW,2BAA2B;IAC1C,8FAA8F;IAC9F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAA;IAC5C,oFAAoF;IACpF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CACpC;AAQD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,2BAA2B,CAoB3G"}
1
+ {"version":3,"file":"migrate-schema-programmatic.d.ts","sourceRoot":"","sources":["../../src/cli/migrate-schema-programmatic.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAQ1D,wBAAgB,cAAc,IAAI,GAAG,GAAG,IAAI,CAU3C;AAED,MAAM,MAAM,2BAA2B,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,CAAA;AAE9E,MAAM,WAAW,2BAA2B;IAC1C,8FAA8F;IAC9F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAC3B,8GAA8G;IAC9G,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAA;IAC5C,oFAAoF;IACpF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CACpC;AAQD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,2BAA2B,CAoB3G"}
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from "node:module";
2
2
  import * as path from "path";
3
- import { AZURE_KNOWN_FIELDS, ELECTRON_DOWNLOAD_DROPPED, MAC_SIGN_FIELDS, MAC_UNIVERSAL_FIELDS, SNAP_BASES } from "./migrate-schema.js";
3
+ import { AZURE_KNOWN_FIELDS, ELECTRON_DOWNLOAD_DROPPED, MAC_SIGN_FIELDS, MAC_UNIVERSAL_FIELDS, NSIS_WEB_ADVISORY, SNAP_BASES } from "./migrate-schema.js";
4
4
  const _require = createRequire(import.meta.url);
5
5
  // `typescript` is intentionally NOT a dependency of electron-builder — it is loaded lazily (same
6
6
  // pattern as js-yaml/json5/toml) and the feature degrades to manual steps when it is unavailable.
@@ -31,20 +31,20 @@ export function loadTypeScript() {
31
31
  export function migrateProgrammaticSource(sourceText, fileName) {
32
32
  const ts = loadTypeScript();
33
33
  if (ts == null) {
34
- return { code: sourceText, changes: [], warnings: [], status: "unsupported", unsupportedReason: "typescript-not-installed" };
34
+ return { code: sourceText, changes: [], warnings: [], advisories: [], status: "unsupported", unsupportedReason: "typescript-not-installed" };
35
35
  }
36
36
  const scriptKind = scriptKindFor(ts, fileName);
37
37
  const sf = ts.createSourceFile(fileName, sourceText, ts.ScriptTarget.Latest, /* setParentNodes */ true, scriptKind);
38
38
  const codemod = new ConfigCodemod(ts, sf, sourceText);
39
39
  const located = codemod.locateConfigObject();
40
40
  if (located.objLit == null) {
41
- return { code: sourceText, changes: [], warnings: [], status: "unsupported", unsupportedReason: located.reason };
41
+ return { code: sourceText, changes: [], warnings: [], advisories: [], status: "unsupported", unsupportedReason: located.reason };
42
42
  }
43
43
  codemod.run(located.objLit);
44
44
  if (codemod.edits.length === 0) {
45
- return { code: sourceText, changes: codemod.changes, warnings: codemod.warnings, status: "no-op" };
45
+ return { code: sourceText, changes: codemod.changes, warnings: codemod.warnings, advisories: codemod.advisories, status: "no-op" };
46
46
  }
47
- return { code: codemod.apply(), changes: codemod.changes, warnings: codemod.warnings, status: "migrated" };
47
+ return { code: codemod.apply(), changes: codemod.changes, warnings: codemod.warnings, advisories: codemod.advisories, status: "migrated" };
48
48
  }
49
49
  function scriptKindFor(ts, fileName) {
50
50
  const ext = path.extname(fileName).toLowerCase();
@@ -69,6 +69,7 @@ class ConfigCodemod {
69
69
  this.edits = [];
70
70
  this.changes = [];
71
71
  this.warnings = [];
72
+ this.advisories = [];
72
73
  this.indentUnit = " ";
73
74
  }
74
75
  // ── Locate the config object literal ──────────────────────────────────────
@@ -277,6 +278,15 @@ class ConfigCodemod {
277
278
  this.indentUnit = this.detectIndentUnit(root);
278
279
  this.ruleRemoveKeys(root, ["electronCompile"], "removed electronCompile (unsupported since v27; migrate to electron-vite, esbuild, or webpack)");
279
280
  this.ruleRemoveKeys(root, ["framework", "nodeVersion", "launchUiVersion"], key => `removed ${key} (Electron is the only supported framework in v27)`);
281
+ const disableDefaultIgnoredFilesDesc = "removed disableDefaultIgnoredFiles (in v27, include a default-excluded file via an explicit `files` glob, e.g. `**/*.obj`)";
282
+ this.ruleRemoveKeys(root, ["disableDefaultIgnoredFiles"], disableDefaultIgnoredFilesDesc);
283
+ // mas/masDev are MacConfiguration-derived, so they accept the (now-removed) key too.
284
+ for (const platform of ["mac", "mas", "masDev", "win", "linux"]) {
285
+ const p = this.getObjectProp(root, platform);
286
+ if (p != null) {
287
+ this.ruleRemoveKeys(p, ["disableDefaultIgnoredFiles"], disableDefaultIgnoredFilesDesc);
288
+ }
289
+ }
280
290
  this.ruleNativeModules(root);
281
291
  this.ruleAsar(root);
282
292
  this.ruleAppImageSystemIntegration(root);
@@ -299,8 +309,42 @@ class ConfigCodemod {
299
309
  }
300
310
  }
301
311
  this.ruleElectronDownload(root);
312
+ this.ruleNsisWebAdvisory(root);
302
313
  }
303
314
  // ── Rules ───────────────────────────────────────────────────────────────
315
+ // Advisory only — adds no edit, so an nsis-web-only config stays a "no-op" and is never rewritten.
316
+ ruleNsisWebAdvisory(root) {
317
+ const ts = this.ts;
318
+ const win = this.getObjectProp(root, "win");
319
+ const winTarget = win != null ? this.getProp(win, "target") : null;
320
+ const globalTarget = this.getProp(root, "target");
321
+ for (const prop of [winTarget, globalTarget]) {
322
+ if (prop != null && ts.isPropertyAssignment(prop) && this.hasNsisWebInTarget(this.unwrap(prop.initializer))) {
323
+ this.advisories.push(NSIS_WEB_ADVISORY);
324
+ return;
325
+ }
326
+ }
327
+ }
328
+ hasNsisWebInTarget(value) {
329
+ const ts = this.ts;
330
+ if (value == null) {
331
+ return false;
332
+ }
333
+ if (ts.isStringLiteral(value)) {
334
+ return value.text === "nsis-web";
335
+ }
336
+ if (ts.isArrayLiteralExpression(value)) {
337
+ return value.elements.some((el) => this.hasNsisWebInTarget(this.unwrap(el)));
338
+ }
339
+ if (ts.isObjectLiteralExpression(value)) {
340
+ const targetProp = this.getProp(value, "target");
341
+ if (targetProp != null && ts.isPropertyAssignment(targetProp)) {
342
+ const inner = this.unwrap(targetProp.initializer);
343
+ return ts.isStringLiteral(inner) && inner.text === "nsis-web";
344
+ }
345
+ }
346
+ return false;
347
+ }
304
348
  ruleRemoveKeys(obj, keys, description) {
305
349
  for (const key of keys) {
306
350
  const prop = this.getProp(obj, key);
@@ -464,15 +508,12 @@ class ConfigCodemod {
464
508
  this.replaceRange(this.start(vPrefixed), vPrefixed.end, `tagNamePrefix: ${isFalse ? '""' : '"v"'}`);
465
509
  changed = true;
466
510
  }
467
- else if (provider === "gitlab") {
468
- this.removeProp(vPrefixed);
469
- changed = true;
470
- }
511
+ // GitLab keeps vPrefixedTagName in v27 (no tagNamePrefix equivalent) — leave it untouched.
471
512
  }
472
513
  if (changed) {
473
514
  this.changes.push({
474
515
  key: `${prefix}${key}[].vPrefixedTagName`,
475
- description: "replaced vPrefixedTagName with tagNamePrefix on GitHub publish entries; removed from GitLab entries",
516
+ description: "replaced vPrefixedTagName with tagNamePrefix on GitHub publish entries",
476
517
  });
477
518
  }
478
519
  }