diff --git a/npm/install.js b/npm/install.js index 069701adee67..864ca633fd30 100755 --- a/npm/install.js +++ b/npm/install.js @@ -70,8 +70,30 @@ function isInstalled () { // unzips and makes path.txt point at the correct executable function extractFile (zipPath) { - return extract(zipPath, { dir: path.join(__dirname, 'dist') }) - .then(() => fs.promises.writeFile(path.join(__dirname, 'path.txt'), platformPath)); + return new Promise((resolve, reject) => { + const distPath = process.env.ELECTRON_OVERRIDE_DIST_PATH || path.join(__dirname, 'dist'); + + extract(zipPath, { dir: path.join(__dirname, 'dist') }) + .then(() => { + // If the zip contains an "electron.d.ts" file, + // move that up + const srcTypeDefPath = path.join(distPath, 'electron.d.ts'); + const targetTypeDefPath = path.join(__dirname, 'electron.d.ts'); + const hasTypeDefinitions = fs.existsSync(srcTypeDefPath); + + if (hasTypeDefinitions) { + try { + fs.renameSync(srcTypeDefPath, targetTypeDefPath); + } catch (err) { + reject(err); + } + } + + // Write a "path.txt" file. + return fs.promises.writeFile(path.join(__dirname, 'path.txt'), platformPath); + }) + .catch((err) => reject(err)); + }); } function getPlatformPath () {