diff --git a/src/modules/frontendlib.js b/src/modules/frontendlib.js index 0a38bc1b..a728c3fa 100644 --- a/src/modules/frontendlib.js +++ b/src/modules/frontendlib.js @@ -1,4 +1,5 @@ const fs = require('fs'); +const path = require('path'); const process = require('process'); const spawnCommand = require('spawn-command'); const recursive = require('recursive-readdir'); @@ -14,11 +15,35 @@ let originalGlobals = null; async function makeClientLibUrl(port) { let configObj = config.get(); - let resourcesPath = configObj.cli.resourcesPath.replace(/^\//, ''); - let files = await recursive(resourcesPath); - let clientLib = files.find((file) => /neutralino\.js$/.test(file)); + let resourcesPath = (configObj.cli && configObj.cli.resourcesPath) ? configObj.cli.resourcesPath.replace(/^\//, '') : 'resources'; + let clientLib = null; + + + if (configObj.cli && configObj.cli.clientLibrary) { + let configClientLib = configObj.cli.clientLibrary.replace(/^\//, ''); + if (fs.existsSync(configClientLib)) { + clientLib = configClientLib; + } + } + + + if (!clientLib && fs.existsSync(resourcesPath)) { + let topFiles = fs.readdirSync(resourcesPath); + if (topFiles.includes('neutralino.js')) { + clientLib = path.join(resourcesPath, 'neutralino.js'); + } + } + + + if (!clientLib && fs.existsSync(resourcesPath)) { + utils.log('Searching for neutralino.js...'); + const skipFiles = ['node_modules', '.git', 'dist', 'build', 'bower_components']; + let files = await recursive(resourcesPath, skipFiles); + clientLib = files.find((file) => /neutralino\.js$/.test(file)); + } + if (clientLib) { - clientLib = clientLib.replace(/\\/g, '/'); // Fix path on Windows + clientLib = clientLib.replace(/\\/g, '/'); } let url = `http://localhost:${port}`; @@ -28,8 +53,9 @@ async function makeClientLibUrl(port) { clientLib = clientLib.replace(configObj.documentRoot, '/'); } url += clientLib; + return url; } - return url; + return null; } function makeGlobalsUrl(port) { @@ -64,10 +90,11 @@ function getPortByProtocol(protocol) { module.exports.bootstrap = async (port) => { let configObj = config.get(); - if(configObj.cli.clientLibrary) { - let clientLibUrl = await makeClientLibUrl(port); + let clientLibUrl = await makeClientLibUrl(port); + if (clientLibUrl) { originalClientLib = patchHTMLFile(clientLibUrl, HOT_REL_LIB_PATCH_REGEX); } + let globalsUrl = await makeGlobalsUrl(port); originalGlobals = patchHTMLFile(globalsUrl, HOT_REL_GLOB_PATCH_REGEX); utils.warn('Global variables patch was applied successfully. ' +