@electron/packager
Version:
Customize and package your Electron app with OS-specific bundles (.app, .exe, etc.) via JS or CLI
66 lines • 2.61 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.isModule = exports.Pruner = void 0;
const common_1 = require("./common");
const galactus_1 = require("galactus");
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
const ELECTRON_MODULES = ['electron', 'electron-nightly'];
class Pruner {
constructor(dir, quiet) {
this.modules = new Set();
this.walkedTree = false;
this.baseDir = (0, common_1.normalizePath)(dir);
this.quiet = quiet;
this.galactus = new galactus_1.DestroyerOfModules({
rootDirectory: dir,
shouldKeepModuleTest: (module, isDevDep) => this.shouldKeepModule(module, isDevDep),
});
}
setModules(moduleMap) {
const modulePaths = Array.from(moduleMap.keys()).map((modulePath) => `/${(0, common_1.normalizePath)(modulePath)}`);
this.modules = new Set(modulePaths);
this.walkedTree = true;
}
async pruneModule(name) {
if (this.walkedTree) {
return this.isProductionModule(name);
}
else {
const moduleMap = await this.galactus.collectKeptModules({
relativePaths: true,
});
this.setModules(moduleMap);
return this.isProductionModule(name);
}
}
shouldKeepModule(module, isDevDep) {
if (isDevDep || module.depType === galactus_1.DepType.ROOT) {
return false;
}
if (ELECTRON_MODULES.includes(module.name)) {
(0, common_1.warning)(`Found '${module.name}' but not as a devDependency, pruning anyway`, this.quiet);
return false;
}
return true;
}
isProductionModule(name) {
return this.modules.has(name);
}
}
exports.Pruner = Pruner;
function isNodeModuleFolder(pathToCheck) {
return (path_1.default.basename(path_1.default.dirname(pathToCheck)) === 'node_modules' ||
(path_1.default.basename(path_1.default.dirname(pathToCheck)).startsWith('@') &&
path_1.default.basename(path_1.default.resolve(pathToCheck, `..${path_1.default.sep}..`)) ===
'node_modules'));
}
async function isModule(pathToCheck) {
return ((await fs_extra_1.default.pathExists(path_1.default.join(pathToCheck, 'package.json'))) &&
isNodeModuleFolder(pathToCheck));
}
exports.isModule = isModule;
//# sourceMappingURL=prune.js.map