From 245110d8abb185391274f0044604dfa5f329a1be Mon Sep 17 00:00:00 2001 From: Kevin Schmidt Date: Tue, 6 Jul 2021 13:47:04 -0600 Subject: [PATCH] feat(electron): generate a single electron preload script --- plugins/electron/index.js | 12 +++++++++++- .../opensphere-electron/app/src/preload/preload.js | 0 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 test/plugins/electron/electron/should-generate-electron-app-package/opensphere-electron/app/src/preload/preload.js 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