electron-rebuild
Version:
Electron supporting package to rebuild native node modules against the currently installed electron
39 lines (31 loc) • 1.13 kB
text/typescript
import * as fs from 'fs';
import * as path from 'path';
const possibleModuleNames = ['electron', 'electron-prebuilt', 'electron-prebuilt-compile'];
const relativeNodeModulesDir = path.resolve(__dirname, '..', '..');
function locateModules(pathMapper: (moduleName: string) => string | null) {
const possibleModulePaths = possibleModuleNames.map(pathMapper);
return possibleModulePaths.filter((modulePath) => modulePath && fs.existsSync(path.join(modulePath, 'package.json')));
}
function locateSiblingModules() {
return locateModules((moduleName) => path.join(relativeNodeModulesDir, moduleName));
}
function locateModulesByRequire() {
return locateModules((moduleName) => {
try {
return path.resolve(require.resolve(path.join(moduleName, 'package.json')), '..');
} catch (error) {
return null;
}
});
}
export function locateElectronModule(): string | null {
let foundModules = locateSiblingModules();
if (foundModules.length > 0) {
return foundModules[0];
}
foundModules = locateModulesByRequire();
if (foundModules.length > 0) {
return foundModules[0];
}
return null;
}