diff --git a/plugins/electron/index.js b/plugins/electron/index.js index 8de074d..d640299 100644 --- a/plugins/electron/index.js +++ b/plugins/electron/index.js @@ -10,6 +10,7 @@ const clone = require('clone'); var electronDeps = {}; var preloadScripts = []; +var preloadRequires = []; const resolvePackages = function(pack, projectDir, packages) { if (packages) { @@ -115,12 +116,20 @@ const writer = function(thisPackage, outputDir) { // copy each preload script to the target directory return Promise.map(preloadScripts, function(script, idx, arr) { // increment preload file names. Electron will load everything in the directory. - var dest = path.join(preloadDir, 'preload' + idx + '.js'); + var destFile = 'preload' + idx + '.js'; + var dest = path.join(preloadDir, destFile); + preloadRequires.push(destFile); console.log('Writing Electron preload script: ' + dest); return fs.copyFileAsync(script.path, dest, fs.constants.COPYFILE_EXCL); }); + }) + .then(function() { + // write the master preload script that should be loaded via webPreferences.preload + var preloadSrc = preloadRequires.map((r) => `require('./${r}');`).join('\n'); + var preloadFile = path.join(preloadDir, 'preload.js'); + return fs.writeFileAsync(preloadFile, preloadSrc); }); }); }; @@ -128,6 +137,7 @@ const writer = function(thisPackage, outputDir) { const clear = function() { electronDeps = {}; preloadScripts = []; + preloadRequires = []; }; module.exports = { diff --git a/test/plugins/electron/electron/should-generate-electron-app-package/opensphere-electron/app/src/preload/preload.js b/test/plugins/electron/electron/should-generate-electron-app-package/opensphere-electron/app/src/preload/preload.js new file mode 100644 index 0000000..e69de29