UNPKG

neu-forge

Version:

A Tool for developing neutralinojs applications

57 lines (48 loc) 1.81 kB
// Simple Functions For Apply Hot Reloading const fs = require('fs'); const recursive = require('recursive-readdir'); const config = require('./config.js'); const constants = require('./constants.js'); const HOT_REL_PATCH_REGEX = constants.misc.hotReloadPatchRegex; let originalClientLib = 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)) .replace(/\\/g, '/'); //Fix path on windows; let url = `http://localhost:${port}`; if(clientLib) { clientLib = '/' + clientLib; if(configObj.documentRoot) { clientLib = clientLib.replace(configObj.documentRoot, '/'); } url += clientLib; } return url; } function patchHTMLFile(clientLib) { let configObj = config.get(); let patchFile = configObj.cli.frontendLibrary.patchFile.replace(/^\//, ''); let html = fs.readFileSync(patchFile, 'utf8'); let matches = HOT_REL_PATCH_REGEX.exec(html); if(matches) { html = html.replace(HOT_REL_PATCH_REGEX, `$1${clientLib}$3`); fs.writeFileSync(patchFile, html); return matches[2]; } return null; } module.exports.bootstrap = async (port) => { let clientLibUrl = await makeClientLibUrl(port); originalClientLib = patchHTMLFile(clientLibUrl); console.log(`WARNING: Hot reload patch was applied successfully. ` + `Please avoid sending keyboard interrupts.`); console.log('INFO: You are working with your frontend library\'s development environment. ' + 'Hot reload and other tooling will work alongside with Neutralinojs API.'); } module.exports.cleanup = () => { if(originalClientLib) { patchHTMLFile(originalClientLib); console.log('INFO: Hot reload patch was reverted.'); } }