app-builder-lib 26.0.14 → 26.0.16
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.
- package/out/electron/ElectronFramework.js +78 -55
- package/out/electron/ElectronFramework.js.map +1 -1
- package/out/linuxPackager.js +1 -1
- package/out/linuxPackager.js.map +1 -1
- package/out/node-module-collector/index.d.ts +2 -2
- package/out/node-module-collector/index.js +8 -7
- package/out/node-module-collector/index.js.map +1 -1
- package/out/node-module-collector/packageManager.d.ts +8 -7
- package/out/node-module-collector/packageManager.js +78 -75
- package/out/node-module-collector/packageManager.js.map +1 -1
- package/out/packager.js +2 -2
- package/out/packager.js.map +1 -1
- package/out/platformPackager.d.ts +1 -0
- package/out/platformPackager.js +6 -4
- package/out/platformPackager.js.map +1 -1
- package/out/publish/PublishManager.js +1 -1
- package/out/publish/PublishManager.js.map +1 -1
- package/out/targets/FpmTarget.js +21 -2
- package/out/targets/FpmTarget.js.map +1 -1
- package/out/util/packageMetadata.js +8 -1
- package/out/util/packageMetadata.js.map +1 -1
- package/out/util/yarn.js +4 -26
- package/out/util/yarn.js.map +1 -1
- package/out/version.d.ts +1 -1
- package/out/version.js +1 -1
- package/out/version.js.map +1 -1
- package/out/winPackager.js +2 -2
- package/out/winPackager.js.map +1 -1
- package/package.json +10 -11
|
@@ -4,7 +4,6 @@ exports.createBrandingOpts = createBrandingOpts;
|
|
|
4
4
|
exports.createElectronFrameworkSupport = createElectronFrameworkSupport;
|
|
5
5
|
const builder_util_1 = require("builder-util");
|
|
6
6
|
const fs_extra_1 = require("fs-extra");
|
|
7
|
-
const fs = require("fs/promises");
|
|
8
7
|
const path = require("path");
|
|
9
8
|
const tiny_async_pool_1 = require("tiny-async-pool");
|
|
10
9
|
const index_1 = require("../index");
|
|
@@ -55,26 +54,27 @@ async function removeUnusedLanguagesIfNeeded(options) {
|
|
|
55
54
|
if (!wantedLanguages.length) {
|
|
56
55
|
return;
|
|
57
56
|
}
|
|
58
|
-
const {
|
|
57
|
+
const { dirs, langFileExt } = getLocalesConfig(options);
|
|
59
58
|
// noinspection SpellCheckingInspection
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
const deletedFiles = async (dir) => {
|
|
60
|
+
await (0, tiny_async_pool_1.default)(builder_util_1.MAX_FILE_REQUESTS, await (0, fs_extra_1.readdir)(dir), async (file) => {
|
|
61
|
+
if (path.extname(file) !== langFileExt) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const language = path.basename(file, langFileExt);
|
|
65
|
+
if (!wantedLanguages.includes(language)) {
|
|
66
|
+
return (0, fs_extra_1.rm)(path.join(dir, file), { recursive: true, force: true });
|
|
67
|
+
}
|
|
62
68
|
return;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return fs.rm(path.join(dir, file), { recursive: true, force: true });
|
|
67
|
-
}
|
|
68
|
-
return;
|
|
69
|
-
});
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
await Promise.all(dirs.map(deletedFiles));
|
|
70
72
|
function getLocalesConfig(options) {
|
|
71
73
|
const { appOutDir, packager } = options;
|
|
72
74
|
if (packager.platform === index_1.Platform.MAC) {
|
|
73
|
-
return {
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
return { dir: path.join(packager.getResourcesDir(appOutDir), "..", "locales"), langFileExt: ".pak" };
|
|
75
|
+
return { dirs: [packager.getResourcesDir(appOutDir), packager.getMacOsElectronFrameworkResourcesDir(appOutDir)], langFileExt: ".lproj" };
|
|
77
76
|
}
|
|
77
|
+
return { dirs: [path.join(packager.getResourcesDir(appOutDir), "..", "locales")], langFileExt: ".pak" };
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
class ElectronFramework {
|
|
@@ -101,7 +101,9 @@ class ElectronFramework {
|
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
async prepareApplicationStageDirectory(options) {
|
|
104
|
-
|
|
104
|
+
const downloadOptions = createDownloadOpts(options.packager.config, options.platformName, options.arch, this.version);
|
|
105
|
+
const shouldCleanup = await unpack(options, downloadOptions, this.distMacOsAppName);
|
|
106
|
+
await cleanupAfterUnpack(options, this.distMacOsAppName, shouldCleanup);
|
|
105
107
|
if (options.packager.config.downloadAlternateFFmpeg) {
|
|
106
108
|
await (0, injectFFMPEG_1.default)(options, this.version);
|
|
107
109
|
}
|
|
@@ -128,50 +130,71 @@ async function createElectronFrameworkSupport(configuration, packager) {
|
|
|
128
130
|
const branding = createBrandingOpts(configuration);
|
|
129
131
|
return new ElectronFramework(branding.projectName, version, `${branding.productName}.app`);
|
|
130
132
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
+
/**
|
|
134
|
+
* Unpacks a custom or default Electron distribution into the app output directory.
|
|
135
|
+
*/
|
|
136
|
+
async function unpack(prepareOptions, downloadOptions, distMacOsAppName) {
|
|
137
|
+
const downloadUsingAdjustedConfig = (options) => {
|
|
138
|
+
return (0, builder_util_1.executeAppBuilder)(["unpack-electron", "--configuration", JSON.stringify([options]), "--output", appOutDir, "--distMacOsAppName", distMacOsAppName]);
|
|
139
|
+
};
|
|
133
140
|
const { packager, appOutDir, platformName } = prepareOptions;
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
if ((_a = (await (0, builder_util_1.statOrNull)(electronDist))) === null || _a === void 0 ? void 0 : _a.isFile()) {
|
|
141
|
-
const customElectronDist = await (0, resolve_1.resolveFunction)(packager.appInfo.type, electronDist, "electronDist");
|
|
142
|
-
resolvedDist = await Promise.resolve(typeof customElectronDist === "function" ? customElectronDist(prepareOptions) : customElectronDist);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
resolvedDist = electronDist;
|
|
146
|
-
}
|
|
147
|
-
dist = path.isAbsolute(resolvedDist) ? resolvedDist : path.resolve(packager.projectDir, resolvedDist);
|
|
148
|
-
}
|
|
149
|
-
if (dist != null) {
|
|
150
|
-
const zipFile = `electron-v${options.version}-${platformName}-${options.arch}.zip`;
|
|
151
|
-
if ((await (0, builder_util_1.statOrNull)(path.join(dist, zipFile))) != null) {
|
|
152
|
-
builder_util_1.log.info({ dist, zipFile }, "resolved electronDist");
|
|
153
|
-
options.cache = dist;
|
|
154
|
-
dist = null;
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
builder_util_1.log.info({ electronDist: builder_util_1.log.filePath(dist), expectedFile: zipFile }, "custom electronDist provided but no zip found; assuming unpacked electron directory.");
|
|
158
|
-
}
|
|
141
|
+
const { version, arch } = downloadOptions;
|
|
142
|
+
const defaultZipName = `electron-v${version}-${platformName}-${arch}.zip`;
|
|
143
|
+
let resolvedDist = null;
|
|
144
|
+
try {
|
|
145
|
+
const electronDistHook = await (0, resolve_1.resolveFunction)(packager.appInfo.type, packager.config.electronDist, "electronDist");
|
|
146
|
+
resolvedDist = typeof electronDistHook === "function" ? await Promise.resolve(electronDistHook(prepareOptions)) : electronDistHook;
|
|
159
147
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
await (0, builder_util_1.executeAppBuilder)(["unpack-electron", "--configuration", JSON.stringify([options]), "--output", appOutDir, "--distMacOsAppName", distMacOsAppName]);
|
|
148
|
+
catch (error) {
|
|
149
|
+
throw new Error("Failed to resolve electronDist: " + error.message);
|
|
163
150
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
151
|
+
if (resolvedDist == null) {
|
|
152
|
+
// if no custom electronDist is provided, use the default unpack logic
|
|
153
|
+
builder_util_1.log.debug(null, "no custom electronDist provided, unpacking default Electron distribution");
|
|
154
|
+
await downloadUsingAdjustedConfig(downloadOptions);
|
|
155
|
+
return true; // indicates that we should clean up after unpacking
|
|
156
|
+
}
|
|
157
|
+
if (!path.isAbsolute(resolvedDist)) {
|
|
158
|
+
// if it's a relative path, resolve it against the project directory
|
|
159
|
+
resolvedDist = path.resolve(packager.projectDir, resolvedDist);
|
|
160
|
+
}
|
|
161
|
+
const electronDistStats = await (0, builder_util_1.statOrNull)(resolvedDist);
|
|
162
|
+
if (!electronDistStats) {
|
|
163
|
+
throw new Error(`The specified electronDist does not exist: ${resolvedDist}. Please provide a valid path to the Electron zip file or cache directory.`);
|
|
164
|
+
}
|
|
165
|
+
if (resolvedDist.endsWith(".zip")) {
|
|
166
|
+
builder_util_1.log.info({ zipFile: resolvedDist }, "using custom electronDist zip file");
|
|
167
|
+
await downloadUsingAdjustedConfig({
|
|
168
|
+
...downloadOptions,
|
|
169
|
+
cache: path.dirname(resolvedDist), // set custom directory to the zip file's directory
|
|
170
|
+
customFilename: path.basename(resolvedDist), // set custom filename to the zip file's name
|
|
172
171
|
});
|
|
172
|
+
return false; // do not clean up after unpacking, it's a custom bundle and we should respect its configuration/contents as required
|
|
173
173
|
}
|
|
174
|
-
|
|
174
|
+
if (electronDistStats.isDirectory()) {
|
|
175
|
+
// backward compatibility: if electronDist is a directory, check for the default zip file inside it
|
|
176
|
+
const files = await (0, fs_extra_1.readdir)(resolvedDist);
|
|
177
|
+
if (files.includes(defaultZipName)) {
|
|
178
|
+
builder_util_1.log.info({ electronDist: builder_util_1.log.filePath(resolvedDist) }, "using custom electronDist directory");
|
|
179
|
+
await downloadUsingAdjustedConfig({
|
|
180
|
+
...downloadOptions,
|
|
181
|
+
cache: resolvedDist,
|
|
182
|
+
customFilename: defaultZipName,
|
|
183
|
+
});
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// if we reach here, it means the provided electronDist is neither a zip file nor a directory with the default zip file
|
|
188
|
+
// e.g. we treat it as a custom already-unpacked Electron distribution
|
|
189
|
+
builder_util_1.log.info({ electronDist: builder_util_1.log.filePath(resolvedDist) }, "using custom unpacked Electron distribution");
|
|
190
|
+
const source = packager.getElectronSrcDir(resolvedDist);
|
|
191
|
+
const destination = packager.getElectronDestinationDir(appOutDir);
|
|
192
|
+
builder_util_1.log.info({ source, destination }, "copying unpacked Electron");
|
|
193
|
+
await (0, fs_extra_1.emptyDir)(appOutDir);
|
|
194
|
+
await (0, builder_util_1.copyDir)(source, destination, {
|
|
195
|
+
isUseHardLink: builder_util_1.DO_NOT_USE_HARD_LINKS,
|
|
196
|
+
});
|
|
197
|
+
return false;
|
|
175
198
|
}
|
|
176
199
|
function cleanupAfterUnpack(prepareOptions, distMacOsAppName, isFullCleanup) {
|
|
177
200
|
const out = prepareOptions.appOutDir;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElectronFramework.js","sourceRoot":"","sources":["../../src/electron/ElectronFramework.ts"],"names":[],"mappings":"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","sourcesContent":["import { asArray, copyDir, DO_NOT_USE_HARD_LINKS, executeAppBuilder, log, MAX_FILE_REQUESTS, statOrNull, unlinkIfExists } from \"builder-util\"\nimport { emptyDir, readdir, rename } from \"fs-extra\"\nimport * as fs from \"fs/promises\"\nimport * as path from \"path\"\nimport asyncPool from \"tiny-async-pool\"\nimport { Configuration } from \"../configuration\"\nimport { BeforeCopyExtraFilesOptions, Framework, PrepareApplicationStageDirectoryOptions } from \"../Framework\"\nimport { Packager, Platform } from \"../index\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { MacPackager } from \"../macPackager\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { resolveFunction } from \"../util/resolve\"\nimport { createMacApp } from \"./electronMac\"\nimport { computeElectronVersion, getElectronVersionFromInstalled } from \"./electronVersion\"\nimport { addWinAsarIntegrity } from \"./electronWin\"\nimport injectFFMPEG from \"./injectFFMPEG\"\n\nexport type ElectronPlatformName = \"darwin\" | \"linux\" | \"win32\" | \"mas\"\n\n/**\n * Electron distributables branding options.\n * @see [Electron BRANDING.json](https://github.com/electron/electron/blob/master/shell/app/BRANDING.json).\n */\nexport interface ElectronBrandingOptions {\n projectName?: string\n productName?: string\n}\n\nexport function createBrandingOpts(opts: Configuration): Required<ElectronBrandingOptions> {\n return {\n projectName: opts.electronBranding?.projectName || \"electron\",\n productName: opts.electronBranding?.productName || \"Electron\",\n }\n}\n\nexport interface ElectronDownloadOptions {\n // https://github.com/electron-userland/electron-builder/issues/3077\n // must be optional\n version?: string\n\n /**\n * The [cache location](https://github.com/electron-userland/electron-download#cache-location).\n */\n cache?: string | null\n\n /**\n * The mirror.\n */\n mirror?: string | null\n\n /** @private */\n customDir?: string | null\n /** @private */\n customFilename?: string | null\n\n strictSSL?: boolean\n isVerifyChecksum?: boolean\n\n platform?: ElectronPlatformName\n arch?: string\n}\n\nfunction createDownloadOpts(opts: Configuration, platform: ElectronPlatformName, arch: string, electronVersion: string): ElectronDownloadOptions {\n return {\n platform,\n arch,\n version: electronVersion,\n ...opts.electronDownload,\n }\n}\n\nasync function beforeCopyExtraFiles(options: BeforeCopyExtraFilesOptions) {\n const { appOutDir, packager } = options\n const electronBranding = createBrandingOpts(packager.config)\n if (packager.platform === Platform.LINUX) {\n const linuxPackager = packager as LinuxPackager\n const executable = path.join(appOutDir, linuxPackager.executableName)\n await rename(path.join(appOutDir, electronBranding.projectName), executable)\n } else if (packager.platform === Platform.WINDOWS) {\n const executable = path.join(appOutDir, `${packager.appInfo.productFilename}.exe`)\n await rename(path.join(appOutDir, `${electronBranding.projectName}.exe`), executable)\n if (options.asarIntegrity) {\n await addWinAsarIntegrity(executable, options.asarIntegrity)\n }\n } else {\n await createMacApp(packager as MacPackager, appOutDir, options.asarIntegrity, (options.platformName as ElectronPlatformName) === \"mas\")\n }\n await removeUnusedLanguagesIfNeeded(options)\n}\n\nasync function removeUnusedLanguagesIfNeeded(options: BeforeCopyExtraFilesOptions) {\n const {\n packager: { config, platformSpecificBuildOptions },\n } = options\n const wantedLanguages = asArray(platformSpecificBuildOptions.electronLanguages || config.electronLanguages)\n if (!wantedLanguages.length) {\n return\n }\n\n const { dir, langFileExt } = getLocalesConfig(options)\n // noinspection SpellCheckingInspection\n await asyncPool(MAX_FILE_REQUESTS, await readdir(dir), async file => {\n if (!file.endsWith(langFileExt)) {\n return\n }\n\n const language = file.substring(0, file.length - langFileExt.length)\n if (!wantedLanguages.includes(language)) {\n return fs.rm(path.join(dir, file), { recursive: true, force: true })\n }\n return\n })\n\n function getLocalesConfig(options: BeforeCopyExtraFilesOptions) {\n const { appOutDir, packager } = options\n if (packager.platform === Platform.MAC) {\n return { dir: packager.getResourcesDir(appOutDir), langFileExt: \".lproj\" }\n } else {\n return { dir: path.join(packager.getResourcesDir(appOutDir), \"..\", \"locales\"), langFileExt: \".pak\" }\n }\n }\n}\n\nclass ElectronFramework implements Framework {\n // noinspection JSUnusedGlobalSymbols\n readonly macOsDefaultTargets = [\"zip\", \"dmg\"]\n // noinspection JSUnusedGlobalSymbols\n readonly defaultAppIdPrefix = \"com.electron.\"\n // noinspection JSUnusedGlobalSymbols\n readonly isCopyElevateHelper = true\n // noinspection JSUnusedGlobalSymbols\n readonly isNpmRebuildRequired = true\n\n constructor(\n readonly name: string,\n readonly version: string,\n readonly distMacOsAppName: string\n ) {}\n\n getDefaultIcon(platform: Platform) {\n if (platform === Platform.LINUX) {\n return path.join(getTemplatePath(\"icons\"), \"electron-linux\")\n } else {\n // default icon is embedded into app skeleton\n return null\n }\n }\n\n async prepareApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions) {\n await unpack(options, createDownloadOpts(options.packager.config, options.platformName, options.arch, this.version), this.distMacOsAppName)\n if (options.packager.config.downloadAlternateFFmpeg) {\n await injectFFMPEG(options, this.version)\n }\n }\n\n beforeCopyExtraFiles(options: BeforeCopyExtraFilesOptions) {\n return beforeCopyExtraFiles(options)\n }\n}\n\nexport async function createElectronFrameworkSupport(configuration: Configuration, packager: Packager): Promise<Framework> {\n let version = configuration.electronVersion\n if (version == null) {\n // for prepacked app asar no dev deps in the app.asar\n if (packager.isPrepackedAppAsar) {\n version = await getElectronVersionFromInstalled(packager.projectDir)\n if (version == null) {\n throw new Error(`Cannot compute electron version for prepacked asar`)\n }\n } else {\n version = await computeElectronVersion(packager.projectDir)\n }\n configuration.electronVersion = version\n }\n\n const branding = createBrandingOpts(configuration)\n return new ElectronFramework(branding.projectName, version, `${branding.productName}.app`)\n}\n\nasync function unpack(prepareOptions: PrepareApplicationStageDirectoryOptions, options: ElectronDownloadOptions, distMacOsAppName: string) {\n const { packager, appOutDir, platformName } = prepareOptions\n\n const electronDist = packager.config.electronDist || null\n let dist: string | null = null\n // check if supplied a custom electron distributable/fork/predownloaded directory\n if (typeof electronDist === \"string\") {\n let resolvedDist: string\n // check if custom electron hook file for import resolving\n if ((await statOrNull(electronDist))?.isFile()) {\n const customElectronDist: any = await resolveFunction(packager.appInfo.type, electronDist, \"electronDist\")\n resolvedDist = await Promise.resolve(typeof customElectronDist === \"function\" ? customElectronDist(prepareOptions) : customElectronDist)\n } else {\n resolvedDist = electronDist\n }\n dist = path.isAbsolute(resolvedDist) ? resolvedDist : path.resolve(packager.projectDir, resolvedDist)\n }\n if (dist != null) {\n const zipFile = `electron-v${options.version}-${platformName}-${options.arch}.zip`\n if ((await statOrNull(path.join(dist, zipFile))) != null) {\n log.info({ dist, zipFile }, \"resolved electronDist\")\n options.cache = dist\n dist = null\n } else {\n log.info({ electronDist: log.filePath(dist), expectedFile: zipFile }, \"custom electronDist provided but no zip found; assuming unpacked electron directory.\")\n }\n }\n\n let isFullCleanup = false\n if (dist == null) {\n await executeAppBuilder([\"unpack-electron\", \"--configuration\", JSON.stringify([options]), \"--output\", appOutDir, \"--distMacOsAppName\", distMacOsAppName])\n } else {\n isFullCleanup = true\n const source = packager.getElectronSrcDir(dist)\n const destination = packager.getElectronDestinationDir(appOutDir)\n log.info({ source, destination }, \"copying Electron\")\n await emptyDir(appOutDir)\n await copyDir(source, destination, {\n isUseHardLink: DO_NOT_USE_HARD_LINKS,\n })\n }\n\n await cleanupAfterUnpack(prepareOptions, distMacOsAppName, isFullCleanup)\n}\n\nfunction cleanupAfterUnpack(prepareOptions: PrepareApplicationStageDirectoryOptions, distMacOsAppName: string, isFullCleanup: boolean) {\n const out = prepareOptions.appOutDir\n const isMac = prepareOptions.packager.platform === Platform.MAC\n const resourcesPath = isMac ? path.join(out, distMacOsAppName, \"Contents\", \"Resources\") : path.join(out, \"resources\")\n\n return Promise.all([\n isFullCleanup ? unlinkIfExists(path.join(resourcesPath, \"default_app.asar\")) : Promise.resolve(),\n isFullCleanup ? unlinkIfExists(path.join(out, \"version\")) : Promise.resolve(),\n isMac\n ? Promise.resolve()\n : rename(path.join(out, \"LICENSE\"), path.join(out, \"LICENSE.electron.txt\")).catch(() => {\n /* ignore */\n }),\n ])\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ElectronFramework.js","sourceRoot":"","sources":["../../src/electron/ElectronFramework.ts"],"names":[],"mappings":"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","sourcesContent":["import { asArray, copyDir, DO_NOT_USE_HARD_LINKS, executeAppBuilder, log, MAX_FILE_REQUESTS, statOrNull, unlinkIfExists } from \"builder-util\"\nimport { emptyDir, readdir, rename, rm } from \"fs-extra\"\nimport * as path from \"path\"\nimport asyncPool from \"tiny-async-pool\"\nimport { Configuration } from \"../configuration\"\nimport { BeforeCopyExtraFilesOptions, Framework, PrepareApplicationStageDirectoryOptions } from \"../Framework\"\nimport { Packager, Platform } from \"../index\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { MacPackager } from \"../macPackager\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { resolveFunction } from \"../util/resolve\"\nimport { createMacApp } from \"./electronMac\"\nimport { computeElectronVersion, getElectronVersionFromInstalled } from \"./electronVersion\"\nimport { addWinAsarIntegrity } from \"./electronWin\"\nimport injectFFMPEG from \"./injectFFMPEG\"\n\nexport type ElectronPlatformName = \"darwin\" | \"linux\" | \"win32\" | \"mas\"\n\n/**\n * Electron distributables branding options.\n * @see [Electron BRANDING.json](https://github.com/electron/electron/blob/master/shell/app/BRANDING.json).\n */\nexport interface ElectronBrandingOptions {\n projectName?: string\n productName?: string\n}\n\nexport function createBrandingOpts(opts: Configuration): Required<ElectronBrandingOptions> {\n return {\n projectName: opts.electronBranding?.projectName || \"electron\",\n productName: opts.electronBranding?.productName || \"Electron\",\n }\n}\n\nexport interface ElectronDownloadOptions {\n // https://github.com/electron-userland/electron-builder/issues/3077\n // must be optional\n version?: string\n\n /**\n * The [cache location](https://github.com/electron-userland/electron-download#cache-location).\n */\n cache?: string | null\n\n /**\n * The mirror.\n */\n mirror?: string | null\n\n /** @private */\n customDir?: string | null\n /** @private */\n customFilename?: string | null\n\n strictSSL?: boolean\n isVerifyChecksum?: boolean\n\n platform?: ElectronPlatformName\n arch?: string\n}\n\nfunction createDownloadOpts(opts: Configuration, platform: ElectronPlatformName, arch: string, electronVersion: string): ElectronDownloadOptions {\n return {\n platform,\n arch,\n version: electronVersion,\n ...opts.electronDownload,\n }\n}\n\nasync function beforeCopyExtraFiles(options: BeforeCopyExtraFilesOptions) {\n const { appOutDir, packager } = options\n const electronBranding = createBrandingOpts(packager.config)\n if (packager.platform === Platform.LINUX) {\n const linuxPackager = packager as LinuxPackager\n const executable = path.join(appOutDir, linuxPackager.executableName)\n await rename(path.join(appOutDir, electronBranding.projectName), executable)\n } else if (packager.platform === Platform.WINDOWS) {\n const executable = path.join(appOutDir, `${packager.appInfo.productFilename}.exe`)\n await rename(path.join(appOutDir, `${electronBranding.projectName}.exe`), executable)\n if (options.asarIntegrity) {\n await addWinAsarIntegrity(executable, options.asarIntegrity)\n }\n } else {\n await createMacApp(packager as MacPackager, appOutDir, options.asarIntegrity, (options.platformName as ElectronPlatformName) === \"mas\")\n }\n await removeUnusedLanguagesIfNeeded(options)\n}\n\nasync function removeUnusedLanguagesIfNeeded(options: BeforeCopyExtraFilesOptions) {\n const {\n packager: { config, platformSpecificBuildOptions },\n } = options\n const wantedLanguages = asArray(platformSpecificBuildOptions.electronLanguages || config.electronLanguages)\n if (!wantedLanguages.length) {\n return\n }\n\n const { dirs, langFileExt } = getLocalesConfig(options)\n // noinspection SpellCheckingInspection\n const deletedFiles = async (dir: string) => {\n await asyncPool(MAX_FILE_REQUESTS, await readdir(dir), async file => {\n if (path.extname(file) !== langFileExt) {\n return\n }\n\n const language = path.basename(file, langFileExt)\n if (!wantedLanguages.includes(language)) {\n return rm(path.join(dir, file), { recursive: true, force: true })\n }\n return\n })\n }\n await Promise.all(dirs.map(deletedFiles))\n\n function getLocalesConfig(options: BeforeCopyExtraFilesOptions) {\n const { appOutDir, packager } = options\n if (packager.platform === Platform.MAC) {\n return { dirs: [packager.getResourcesDir(appOutDir), packager.getMacOsElectronFrameworkResourcesDir(appOutDir)], langFileExt: \".lproj\" }\n }\n return { dirs: [path.join(packager.getResourcesDir(appOutDir), \"..\", \"locales\")], langFileExt: \".pak\" }\n }\n}\n\nclass ElectronFramework implements Framework {\n // noinspection JSUnusedGlobalSymbols\n readonly macOsDefaultTargets = [\"zip\", \"dmg\"]\n // noinspection JSUnusedGlobalSymbols\n readonly defaultAppIdPrefix = \"com.electron.\"\n // noinspection JSUnusedGlobalSymbols\n readonly isCopyElevateHelper = true\n // noinspection JSUnusedGlobalSymbols\n readonly isNpmRebuildRequired = true\n\n constructor(\n readonly name: string,\n readonly version: string,\n readonly distMacOsAppName: string\n ) {}\n\n getDefaultIcon(platform: Platform) {\n if (platform === Platform.LINUX) {\n return path.join(getTemplatePath(\"icons\"), \"electron-linux\")\n } else {\n // default icon is embedded into app skeleton\n return null\n }\n }\n\n async prepareApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions) {\n const downloadOptions = createDownloadOpts(options.packager.config, options.platformName, options.arch, this.version)\n const shouldCleanup = await unpack(options, downloadOptions, this.distMacOsAppName)\n await cleanupAfterUnpack(options, this.distMacOsAppName, shouldCleanup)\n if (options.packager.config.downloadAlternateFFmpeg) {\n await injectFFMPEG(options, this.version)\n }\n }\n\n beforeCopyExtraFiles(options: BeforeCopyExtraFilesOptions) {\n return beforeCopyExtraFiles(options)\n }\n}\n\nexport async function createElectronFrameworkSupport(configuration: Configuration, packager: Packager): Promise<Framework> {\n let version = configuration.electronVersion\n if (version == null) {\n // for prepacked app asar no dev deps in the app.asar\n if (packager.isPrepackedAppAsar) {\n version = await getElectronVersionFromInstalled(packager.projectDir)\n if (version == null) {\n throw new Error(`Cannot compute electron version for prepacked asar`)\n }\n } else {\n version = await computeElectronVersion(packager.projectDir)\n }\n configuration.electronVersion = version\n }\n\n const branding = createBrandingOpts(configuration)\n return new ElectronFramework(branding.projectName, version, `${branding.productName}.app`)\n}\n\n/**\n * Unpacks a custom or default Electron distribution into the app output directory.\n */\nasync function unpack(prepareOptions: PrepareApplicationStageDirectoryOptions, downloadOptions: ElectronDownloadOptions, distMacOsAppName: string) {\n const downloadUsingAdjustedConfig = (options: ElectronDownloadOptions) => {\n return executeAppBuilder([\"unpack-electron\", \"--configuration\", JSON.stringify([options]), \"--output\", appOutDir, \"--distMacOsAppName\", distMacOsAppName])\n }\n\n const { packager, appOutDir, platformName } = prepareOptions\n const { version, arch } = downloadOptions\n const defaultZipName = `electron-v${version}-${platformName}-${arch}.zip`\n\n let resolvedDist: string | null = null\n try {\n const electronDistHook: any = await resolveFunction(packager.appInfo.type, packager.config.electronDist, \"electronDist\")\n resolvedDist = typeof electronDistHook === \"function\" ? await Promise.resolve(electronDistHook(prepareOptions)) : electronDistHook\n } catch (error: any) {\n throw new Error(\"Failed to resolve electronDist: \" + error.message)\n }\n\n if (resolvedDist == null) {\n // if no custom electronDist is provided, use the default unpack logic\n log.debug(null, \"no custom electronDist provided, unpacking default Electron distribution\")\n await downloadUsingAdjustedConfig(downloadOptions)\n return true // indicates that we should clean up after unpacking\n }\n\n if (!path.isAbsolute(resolvedDist)) {\n // if it's a relative path, resolve it against the project directory\n resolvedDist = path.resolve(packager.projectDir, resolvedDist)\n }\n\n const electronDistStats = await statOrNull(resolvedDist)\n if (!electronDistStats) {\n throw new Error(`The specified electronDist does not exist: ${resolvedDist}. Please provide a valid path to the Electron zip file or cache directory.`)\n }\n\n if (resolvedDist.endsWith(\".zip\")) {\n log.info({ zipFile: resolvedDist }, \"using custom electronDist zip file\")\n await downloadUsingAdjustedConfig({\n ...downloadOptions,\n cache: path.dirname(resolvedDist), // set custom directory to the zip file's directory\n customFilename: path.basename(resolvedDist), // set custom filename to the zip file's name\n })\n return false // do not clean up after unpacking, it's a custom bundle and we should respect its configuration/contents as required\n }\n\n if (electronDistStats.isDirectory()) {\n // backward compatibility: if electronDist is a directory, check for the default zip file inside it\n const files = await readdir(resolvedDist)\n if (files.includes(defaultZipName)) {\n log.info({ electronDist: log.filePath(resolvedDist) }, \"using custom electronDist directory\")\n await downloadUsingAdjustedConfig({\n ...downloadOptions,\n cache: resolvedDist,\n customFilename: defaultZipName,\n })\n return false\n }\n }\n\n // if we reach here, it means the provided electronDist is neither a zip file nor a directory with the default zip file\n // e.g. we treat it as a custom already-unpacked Electron distribution\n log.info({ electronDist: log.filePath(resolvedDist) }, \"using custom unpacked Electron distribution\")\n const source = packager.getElectronSrcDir(resolvedDist)\n const destination = packager.getElectronDestinationDir(appOutDir)\n log.info({ source, destination }, \"copying unpacked Electron\")\n await emptyDir(appOutDir)\n await copyDir(source, destination, {\n isUseHardLink: DO_NOT_USE_HARD_LINKS,\n })\n\n return false\n}\n\nfunction cleanupAfterUnpack(prepareOptions: PrepareApplicationStageDirectoryOptions, distMacOsAppName: string, isFullCleanup: boolean) {\n const out = prepareOptions.appOutDir\n const isMac = prepareOptions.packager.platform === Platform.MAC\n const resourcesPath = isMac ? path.join(out, distMacOsAppName, \"Contents\", \"Resources\") : path.join(out, \"resources\")\n\n return Promise.all([\n isFullCleanup ? unlinkIfExists(path.join(resourcesPath, \"default_app.asar\")) : Promise.resolve(),\n isFullCleanup ? unlinkIfExists(path.join(out, \"version\")) : Promise.resolve(),\n isMac\n ? Promise.resolve()\n : rename(path.join(out, \"LICENSE\"), path.join(out, \"LICENSE.electron.txt\")).catch(() => {\n /* ignore */\n }),\n ])\n}\n"]}
|
package/out/linuxPackager.js
CHANGED
|
@@ -13,7 +13,7 @@ class LinuxPackager extends platformPackager_1.PlatformPackager {
|
|
|
13
13
|
var _a;
|
|
14
14
|
super(info, core_1.Platform.LINUX);
|
|
15
15
|
const executableName = (_a = this.platformSpecificBuildOptions.executableName) !== null && _a !== void 0 ? _a : info.config.executableName;
|
|
16
|
-
this.executableName = executableName == null ? this.appInfo.
|
|
16
|
+
this.executableName = executableName == null ? this.appInfo.sanitizedProductName : (0, filename_1.sanitizeFileName)(executableName);
|
|
17
17
|
}
|
|
18
18
|
get defaultTarget() {
|
|
19
19
|
return ["snap", "appimage"];
|
package/out/linuxPackager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linuxPackager.js","sourceRoot":"","sources":["../src/linuxPackager.ts"],"names":[],"mappings":";;;AAyEA,oDAcC;AAvFD,+CAAmC;AACnC,wDAA4D;AAC5D,iCAAqD;AAGrD,yDAAqD;AAIrD,mEAA+D;AAE/D,2DAA4D;AAE5D,MAAa,aAAc,SAAQ,mCAAoC;IAGrE,YAAY,IAAc;;QACxB,KAAK,CAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,CAAC,CAAA;QAE3B,MAAM,cAAc,GAAG,MAAA,IAAI,CAAC,4BAA4B,CAAC,cAAc,mCAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAA;QACrG,IAAI,CAAC,cAAc,GAAG,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"linuxPackager.js","sourceRoot":"","sources":["../src/linuxPackager.ts"],"names":[],"mappings":";;;AAyEA,oDAcC;AAvFD,+CAAmC;AACnC,wDAA4D;AAC5D,iCAAqD;AAGrD,yDAAqD;AAIrD,mEAA+D;AAE/D,2DAA4D;AAE5D,MAAa,aAAc,SAAQ,mCAAoC;IAGrE,YAAY,IAAc;;QACxB,KAAK,CAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,CAAC,CAAA;QAE3B,MAAM,cAAc,GAAG,MAAA,IAAI,CAAC,4BAA4B,CAAC,cAAc,mCAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAA;QACrG,IAAI,CAAC,cAAc,GAAG,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAA,2BAAgB,EAAC,cAAc,CAAC,CAAA;IACrH,CAAC;IAED,IAAI,aAAa;QACf,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,aAAa,CAAC,OAAsB,EAAE,MAAmE;QACvG,IAAI,MAAgC,CAAA;QACpC,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,CAAA;YACtC,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC,CAAA;QAED,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,IAAI,KAAK,iBAAU,EAAE,CAAC;gBACxB,SAAQ;YACV,CAAC;YAED,MAAM,WAAW,GAA+F,CAAC,GAAG,EAAE;gBACpH,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,UAAU;wBACb,OAAO,OAAO,CAAC,0BAA0B,CAAC,CAAC,OAAO,CAAA;oBACpD,KAAK,MAAM;wBACT,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAA;oBAC1C,KAAK,SAAS;wBACZ,OAAO,OAAO,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAA;oBACnD,KAAK,KAAK,CAAC;oBACX,KAAK,KAAK,CAAC;oBACX,KAAK,IAAI,CAAC;oBACV,KAAK,SAAS,CAAC;oBACf,KAAK,QAAQ,CAAC;oBACd,KAAK,KAAK,CAAC;oBACX,KAAK,KAAK;wBACR,OAAO,OAAO,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAA;oBAC/C;wBACE,OAAO,IAAI,CAAA;gBACf,CAAC;YACH,CAAC,CAAC,EAAE,CAAA;YAEJ,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;gBACpB,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;oBACzB,OAAO,IAAA,kCAAkB,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;gBAC/C,CAAC;gBAED,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAA;YACzD,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF;AA1DD,sCA0DC;AAED,SAAgB,oBAAoB,CAAC,IAAU;IAC7C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,mBAAI,CAAC,GAAG;YACX,OAAO,QAAQ,CAAA;QACjB,KAAK,mBAAI,CAAC,IAAI;YACZ,OAAO,MAAM,CAAA;QACf,KAAK,mBAAI,CAAC,MAAM;YACd,OAAO,KAAK,CAAA;QACd,KAAK,mBAAI,CAAC,KAAK;YACb,OAAO,aAAa,CAAA;QAEtB;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAA;IAC/C,CAAC;AACH,CAAC","sourcesContent":["import { Arch } from \"builder-util\"\nimport { sanitizeFileName } from \"builder-util/out/filename\"\nimport { DIR_TARGET, Platform, Target } from \"./core\"\nimport { LinuxConfiguration } from \"./options/linuxOptions\"\nimport { Packager } from \"./packager\"\nimport { PlatformPackager } from \"./platformPackager\"\nimport AppImageTarget from \"./targets/AppImageTarget\"\nimport FlatpakTarget from \"./targets/FlatpakTarget\"\nimport FpmTarget from \"./targets/FpmTarget\"\nimport { LinuxTargetHelper } from \"./targets/LinuxTargetHelper\"\nimport SnapTarget from \"./targets/snap\"\nimport { createCommonTarget } from \"./targets/targetFactory\"\n\nexport class LinuxPackager extends PlatformPackager<LinuxConfiguration> {\n readonly executableName: string\n\n constructor(info: Packager) {\n super(info, Platform.LINUX)\n\n const executableName = this.platformSpecificBuildOptions.executableName ?? info.config.executableName\n this.executableName = executableName == null ? this.appInfo.sanitizedProductName : sanitizeFileName(executableName)\n }\n\n get defaultTarget(): Array<string> {\n return [\"snap\", \"appimage\"]\n }\n\n createTargets(targets: Array<string>, mapper: (name: string, factory: (outDir: string) => Target) => void): void {\n let helper: LinuxTargetHelper | null\n const getHelper = () => {\n if (helper == null) {\n helper = new LinuxTargetHelper(this)\n }\n return helper\n }\n\n for (const name of targets) {\n if (name === DIR_TARGET) {\n continue\n }\n\n const targetClass: typeof AppImageTarget | typeof SnapTarget | typeof FlatpakTarget | typeof FpmTarget | null = (() => {\n switch (name) {\n case \"appimage\":\n return require(\"./targets/AppImageTarget\").default\n case \"snap\":\n return require(\"./targets/snap\").default\n case \"flatpak\":\n return require(\"./targets/FlatpakTarget\").default\n case \"deb\":\n case \"rpm\":\n case \"sh\":\n case \"freebsd\":\n case \"pacman\":\n case \"apk\":\n case \"p5p\":\n return require(\"./targets/FpmTarget\").default\n default:\n return null\n }\n })()\n\n mapper(name, outDir => {\n if (targetClass === null) {\n return createCommonTarget(name, outDir, this)\n }\n\n return new targetClass(name, this, getHelper(), outDir)\n })\n }\n }\n}\n\nexport function toAppImageOrSnapArch(arch: Arch): string {\n switch (arch) {\n case Arch.x64:\n return \"x86_64\"\n case Arch.ia32:\n return \"i386\"\n case Arch.armv7l:\n return \"arm\"\n case Arch.arm64:\n return \"arm_aarch64\"\n\n default:\n throw new Error(`Unsupported arch ${arch}`)\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NpmNodeModulesCollector } from "./npmNodeModulesCollector";
|
|
2
2
|
import { PnpmNodeModulesCollector } from "./pnpmNodeModulesCollector";
|
|
3
|
-
import {
|
|
3
|
+
import { detectPackageManager, PM, getPackageManagerCommand } from "./packageManager";
|
|
4
4
|
import { NodeModuleInfo } from "./types";
|
|
5
5
|
export declare function getCollectorByPackageManager(rootDir: string): Promise<NpmNodeModulesCollector | PnpmNodeModulesCollector>;
|
|
6
6
|
export declare function getNodeModules(rootDir: string): Promise<NodeModuleInfo[]>;
|
|
7
|
-
export {
|
|
7
|
+
export { detectPackageManager, PM, getPackageManagerCommand };
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getPackageManagerCommand = exports.PM = exports.detectPackageManager = void 0;
|
|
4
4
|
exports.getCollectorByPackageManager = getCollectorByPackageManager;
|
|
5
5
|
exports.getNodeModules = getNodeModules;
|
|
6
6
|
const npmNodeModulesCollector_1 = require("./npmNodeModulesCollector");
|
|
7
7
|
const pnpmNodeModulesCollector_1 = require("./pnpmNodeModulesCollector");
|
|
8
8
|
const yarnNodeModulesCollector_1 = require("./yarnNodeModulesCollector");
|
|
9
9
|
const packageManager_1 = require("./packageManager");
|
|
10
|
-
Object.defineProperty(exports, "
|
|
11
|
-
Object.defineProperty(exports, "
|
|
10
|
+
Object.defineProperty(exports, "detectPackageManager", { enumerable: true, get: function () { return packageManager_1.detectPackageManager; } });
|
|
11
|
+
Object.defineProperty(exports, "PM", { enumerable: true, get: function () { return packageManager_1.PM; } });
|
|
12
|
+
Object.defineProperty(exports, "getPackageManagerCommand", { enumerable: true, get: function () { return packageManager_1.getPackageManagerCommand; } });
|
|
12
13
|
const builder_util_1 = require("builder-util");
|
|
13
14
|
async function isPnpmProjectHoisted(rootDir) {
|
|
14
15
|
const command = await pnpmNodeModulesCollector_1.PnpmNodeModulesCollector.pmCommand.value;
|
|
@@ -17,16 +18,16 @@ async function isPnpmProjectHoisted(rootDir) {
|
|
|
17
18
|
return lines["node-linker"] === "hoisted";
|
|
18
19
|
}
|
|
19
20
|
async function getCollectorByPackageManager(rootDir) {
|
|
20
|
-
const manager =
|
|
21
|
+
const manager = (0, packageManager_1.detectPackageManager)(rootDir);
|
|
21
22
|
switch (manager) {
|
|
22
|
-
case
|
|
23
|
+
case packageManager_1.PM.PNPM:
|
|
23
24
|
if (await isPnpmProjectHoisted(rootDir)) {
|
|
24
25
|
return new npmNodeModulesCollector_1.NpmNodeModulesCollector(rootDir);
|
|
25
26
|
}
|
|
26
27
|
return new pnpmNodeModulesCollector_1.PnpmNodeModulesCollector(rootDir);
|
|
27
|
-
case
|
|
28
|
+
case packageManager_1.PM.NPM:
|
|
28
29
|
return new npmNodeModulesCollector_1.NpmNodeModulesCollector(rootDir);
|
|
29
|
-
case
|
|
30
|
+
case packageManager_1.PM.YARN:
|
|
30
31
|
return new yarnNodeModulesCollector_1.YarnNodeModulesCollector(rootDir);
|
|
31
32
|
default:
|
|
32
33
|
return new npmNodeModulesCollector_1.NpmNodeModulesCollector(rootDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node-module-collector/index.ts"],"names":[],"mappings":";;;AAcA,oEAeC;AAED,wCAGC;AAlCD,uEAAmE;AACnE,yEAAqE;AACrE,yEAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node-module-collector/index.ts"],"names":[],"mappings":";;;AAcA,oEAeC;AAED,wCAGC;AAlCD,uEAAmE;AACnE,yEAAqE;AACrE,yEAAqE;AACrE,qDAAqF;AAiC5E,qGAjCA,qCAAoB,OAiCA;AAAE,mFAjCA,mBAAE,OAiCA;AAAE,yGAjCA,yCAAwB,OAiCA;AA/B3D,+CAAmC;AAEnC,KAAK,UAAU,oBAAoB,CAAC,OAAe;IACjD,MAAM,OAAO,GAAG,MAAM,mDAAwB,CAAC,SAAS,CAAC,KAAK,CAAA;IAC9D,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAI,EAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACrF,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACpG,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,SAAS,CAAA;AAC3C,CAAC;AAEM,KAAK,UAAU,4BAA4B,CAAC,OAAe;IAChE,MAAM,OAAO,GAAO,IAAA,qCAAoB,EAAC,OAAO,CAAC,CAAA;IACjD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,mBAAE,CAAC,IAAI;YACV,IAAI,MAAM,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,iDAAuB,CAAC,OAAO,CAAC,CAAA;YAC7C,CAAC;YACD,OAAO,IAAI,mDAAwB,CAAC,OAAO,CAAC,CAAA;QAC9C,KAAK,mBAAE,CAAC,GAAG;YACT,OAAO,IAAI,iDAAuB,CAAC,OAAO,CAAC,CAAA;QAC7C,KAAK,mBAAE,CAAC,IAAI;YACV,OAAO,IAAI,mDAAwB,CAAC,OAAO,CAAC,CAAA;QAC9C;YACE,OAAO,IAAI,iDAAuB,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,OAAe;IAClD,MAAM,SAAS,GAAG,MAAM,4BAA4B,CAAC,OAAO,CAAC,CAAA;IAC7D,OAAO,SAAS,CAAC,cAAc,EAAE,CAAA;AACnC,CAAC","sourcesContent":["import { NpmNodeModulesCollector } from \"./npmNodeModulesCollector\"\nimport { PnpmNodeModulesCollector } from \"./pnpmNodeModulesCollector\"\nimport { YarnNodeModulesCollector } from \"./yarnNodeModulesCollector\"\nimport { detectPackageManager, PM, getPackageManagerCommand } from \"./packageManager\"\nimport { NodeModuleInfo } from \"./types\"\nimport { exec } from \"builder-util\"\n\nasync function isPnpmProjectHoisted(rootDir: string) {\n const command = await PnpmNodeModulesCollector.pmCommand.value\n const config = await exec(command, [\"config\", \"list\"], { cwd: rootDir, shell: true })\n const lines = Object.fromEntries(config.split(\"\\n\").map(line => line.split(\"=\").map(s => s.trim())))\n return lines[\"node-linker\"] === \"hoisted\"\n}\n\nexport async function getCollectorByPackageManager(rootDir: string) {\n const manager: PM = detectPackageManager(rootDir)\n switch (manager) {\n case PM.PNPM:\n if (await isPnpmProjectHoisted(rootDir)) {\n return new NpmNodeModulesCollector(rootDir)\n }\n return new PnpmNodeModulesCollector(rootDir)\n case PM.NPM:\n return new NpmNodeModulesCollector(rootDir)\n case PM.YARN:\n return new YarnNodeModulesCollector(rootDir)\n default:\n return new NpmNodeModulesCollector(rootDir)\n }\n}\n\nexport async function getNodeModules(rootDir: string): Promise<NodeModuleInfo[]> {\n const collector = await getCollectorByPackageManager(rootDir)\n return collector.getNodeModules()\n}\n\nexport { detectPackageManager, PM, getPackageManagerCommand }\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export declare function
|
|
1
|
+
export declare enum PM {
|
|
2
|
+
NPM = "npm",
|
|
3
|
+
YARN = "yarn",
|
|
4
|
+
PNPM = "pnpm",
|
|
5
|
+
YARN_BERRY = "yarn-berry"
|
|
6
|
+
}
|
|
7
|
+
export declare function getPackageManagerCommand(pm: PM): string;
|
|
8
|
+
export declare function detectPackageManager(cwd: string): PM;
|
|
@@ -1,90 +1,93 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return Promise.resolve(lockfileCache.get(key));
|
|
3
|
+
exports.PM = void 0;
|
|
4
|
+
exports.getPackageManagerCommand = getPackageManagerCommand;
|
|
5
|
+
exports.detectPackageManager = detectPackageManager;
|
|
6
|
+
const path = require("path");
|
|
7
|
+
const fs = require("fs");
|
|
8
|
+
var PM;
|
|
9
|
+
(function (PM) {
|
|
10
|
+
PM["NPM"] = "npm";
|
|
11
|
+
PM["YARN"] = "yarn";
|
|
12
|
+
PM["PNPM"] = "pnpm";
|
|
13
|
+
PM["YARN_BERRY"] = "yarn-berry";
|
|
14
|
+
})(PM || (exports.PM = PM = {}));
|
|
15
|
+
function detectPackageManagerByEnv() {
|
|
16
|
+
var _a, _b, _c, _d;
|
|
17
|
+
if (process.env.npm_config_user_agent) {
|
|
18
|
+
const userAgent = process.env.npm_config_user_agent;
|
|
19
|
+
if (userAgent.includes("pnpm")) {
|
|
20
|
+
return PM.PNPM;
|
|
21
|
+
}
|
|
22
|
+
if (userAgent.includes("yarn")) {
|
|
23
|
+
if (userAgent.includes("yarn/")) {
|
|
24
|
+
const version = userAgent.match(/yarn\/(\d+)\./);
|
|
25
|
+
if (version && parseInt(version[1]) >= 2) {
|
|
26
|
+
return PM.YARN_BERRY;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return PM.YARN;
|
|
30
|
+
}
|
|
31
|
+
if (userAgent.includes("npm")) {
|
|
32
|
+
return PM.NPM;
|
|
33
|
+
}
|
|
35
34
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
(0, builder_util_1.exists)((0, path_1.resolve)(cwd, "bun.lockb")),
|
|
41
|
-
]).then(([isYarn, _, isPnpm, isBun]) => {
|
|
42
|
-
let value;
|
|
43
|
-
if (isYarn) {
|
|
44
|
-
value = "yarn";
|
|
35
|
+
if (process.env.npm_execpath) {
|
|
36
|
+
const execPath = process.env.npm_execpath.toLowerCase();
|
|
37
|
+
if (execPath.includes("pnpm")) {
|
|
38
|
+
return PM.PNPM;
|
|
45
39
|
}
|
|
46
|
-
|
|
47
|
-
|
|
40
|
+
if (execPath.includes("yarn")) {
|
|
41
|
+
if (execPath.includes("berry") || ((_a = process.env.YARN_VERSION) === null || _a === void 0 ? void 0 : _a.startsWith("2.")) || ((_b = process.env.YARN_VERSION) === null || _b === void 0 ? void 0 : _b.startsWith("3."))) {
|
|
42
|
+
return PM.YARN_BERRY;
|
|
43
|
+
}
|
|
44
|
+
return PM.YARN;
|
|
48
45
|
}
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
if (execPath.includes("npm")) {
|
|
47
|
+
return PM.NPM;
|
|
51
48
|
}
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
}
|
|
50
|
+
if (process.env.PNPM_HOME) {
|
|
51
|
+
return PM.PNPM;
|
|
52
|
+
}
|
|
53
|
+
if (process.env.YARN_REGISTRY) {
|
|
54
|
+
if (((_c = process.env.YARN_VERSION) === null || _c === void 0 ? void 0 : _c.startsWith("2.")) || ((_d = process.env.YARN_VERSION) === null || _d === void 0 ? void 0 : _d.startsWith("3."))) {
|
|
55
|
+
return PM.YARN_BERRY;
|
|
54
56
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
return PM.YARN;
|
|
58
|
+
}
|
|
59
|
+
if (process.env.npm_package_json) {
|
|
60
|
+
return PM.NPM;
|
|
61
|
+
}
|
|
62
|
+
// return default
|
|
63
|
+
return PM.NPM;
|
|
58
64
|
}
|
|
59
|
-
|
|
60
|
-
let
|
|
61
|
-
if (
|
|
62
|
-
|
|
65
|
+
function getPackageManagerCommand(pm) {
|
|
66
|
+
let cmd = pm;
|
|
67
|
+
if (pm === PM.YARN_BERRY || process.env.FORCE_YARN === "true") {
|
|
68
|
+
cmd = PM.YARN;
|
|
63
69
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
return `${cmd}${process.platform === "win32" ? ".cmd" : ""}`;
|
|
71
|
+
}
|
|
72
|
+
function detectPackageManager(cwd) {
|
|
73
|
+
const isYarnLockFileExists = fs.existsSync(path.join(cwd, "yarn.lock"));
|
|
74
|
+
const isPnpmLockFileExists = fs.existsSync(path.join(cwd, "pnpm-lock.yaml"));
|
|
75
|
+
const isNpmLockFileExists = fs.existsSync(path.join(cwd, "package-lock.json"));
|
|
76
|
+
if (isYarnLockFileExists && !isPnpmLockFileExists && !isNpmLockFileExists) {
|
|
77
|
+
// check if yarn is berry
|
|
78
|
+
const pm = detectPackageManagerByEnv();
|
|
79
|
+
if (pm === PM.YARN_BERRY) {
|
|
80
|
+
return PM.YARN_BERRY;
|
|
70
81
|
}
|
|
82
|
+
return PM.YARN;
|
|
71
83
|
}
|
|
72
|
-
if (
|
|
73
|
-
return
|
|
74
|
-
}
|
|
75
|
-
if (await hasGlobalInstallation("pnpm")) {
|
|
76
|
-
return "yarn";
|
|
84
|
+
if (isPnpmLockFileExists && !isYarnLockFileExists && !isNpmLockFileExists) {
|
|
85
|
+
return PM.PNPM;
|
|
77
86
|
}
|
|
78
|
-
if (
|
|
79
|
-
return
|
|
87
|
+
if (isNpmLockFileExists && !isYarnLockFileExists && !isPnpmLockFileExists) {
|
|
88
|
+
return PM.NPM;
|
|
80
89
|
}
|
|
81
|
-
return
|
|
82
|
-
|
|
83
|
-
exports.detect = detect;
|
|
84
|
-
function getPackageManagerVersion(pm) {
|
|
85
|
-
return (0, builder_util_1.exec)(pm, ["--version"], { shell: true }).then(res => res.trim());
|
|
86
|
-
}
|
|
87
|
-
function clearCache() {
|
|
88
|
-
return cache.clear();
|
|
90
|
+
// if there are no lock files or multiple lock files, return the package manager from env
|
|
91
|
+
return detectPackageManagerByEnv();
|
|
89
92
|
}
|
|
90
93
|
//# sourceMappingURL=packageManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageManager.js","sourceRoot":"","sources":["../../src/node-module-collector/packageManager.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"packageManager.js","sourceRoot":"","sources":["../../src/node-module-collector/packageManager.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from \"path\"\nimport * as fs from \"fs\"\n\nexport enum PM {\n NPM = \"npm\",\n YARN = \"yarn\",\n PNPM = \"pnpm\",\n YARN_BERRY = \"yarn-berry\",\n}\n\nfunction detectPackageManagerByEnv(): PM {\n if (process.env.npm_config_user_agent) {\n const userAgent = process.env.npm_config_user_agent\n\n if (userAgent.includes(\"pnpm\")) {\n return PM.PNPM\n }\n\n if (userAgent.includes(\"yarn\")) {\n if (userAgent.includes(\"yarn/\")) {\n const version = userAgent.match(/yarn\\/(\\d+)\\./)\n if (version && parseInt(version[1]) >= 2) {\n return PM.YARN_BERRY\n }\n }\n return PM.YARN\n }\n\n if (userAgent.includes(\"npm\")) {\n return PM.NPM\n }\n }\n\n if (process.env.npm_execpath) {\n const execPath = process.env.npm_execpath.toLowerCase()\n\n if (execPath.includes(\"pnpm\")) {\n return PM.PNPM\n }\n\n if (execPath.includes(\"yarn\")) {\n if (execPath.includes(\"berry\") || process.env.YARN_VERSION?.startsWith(\"2.\") || process.env.YARN_VERSION?.startsWith(\"3.\")) {\n return PM.YARN_BERRY\n }\n return PM.YARN\n }\n\n if (execPath.includes(\"npm\")) {\n return PM.NPM\n }\n }\n\n if (process.env.PNPM_HOME) {\n return PM.PNPM\n }\n\n if (process.env.YARN_REGISTRY) {\n if (process.env.YARN_VERSION?.startsWith(\"2.\") || process.env.YARN_VERSION?.startsWith(\"3.\")) {\n return PM.YARN_BERRY\n }\n return PM.YARN\n }\n\n if (process.env.npm_package_json) {\n return PM.NPM\n }\n\n // return default\n return PM.NPM\n}\n\nexport function getPackageManagerCommand(pm: PM) {\n let cmd = pm\n if (pm === PM.YARN_BERRY || process.env.FORCE_YARN === \"true\") {\n cmd = PM.YARN\n }\n return `${cmd}${process.platform === \"win32\" ? \".cmd\" : \"\"}`\n}\n\nexport function detectPackageManager(cwd: string) {\n const isYarnLockFileExists = fs.existsSync(path.join(cwd, \"yarn.lock\"))\n const isPnpmLockFileExists = fs.existsSync(path.join(cwd, \"pnpm-lock.yaml\"))\n const isNpmLockFileExists = fs.existsSync(path.join(cwd, \"package-lock.json\"))\n\n if (isYarnLockFileExists && !isPnpmLockFileExists && !isNpmLockFileExists) {\n // check if yarn is berry\n const pm = detectPackageManagerByEnv()\n if (pm === PM.YARN_BERRY) {\n return PM.YARN_BERRY\n }\n return PM.YARN\n }\n\n if (isPnpmLockFileExists && !isYarnLockFileExists && !isNpmLockFileExists) {\n return PM.PNPM\n }\n\n if (isNpmLockFileExists && !isYarnLockFileExists && !isPnpmLockFileExists) {\n return PM.NPM\n }\n // if there are no lock files or multiple lock files, return the package manager from env\n return detectPackageManagerByEnv()\n}\n"]}
|