neu-forge
Version:
A Tool for developing neutralinojs applications
50 lines (38 loc) • 1.07 kB
JavaScript
// FileWatcher Reloads The App When Detects Changes
const fs = require('fs');
const chokidar = require('chokidar');
const websocket = require('./websocket.js');
const config = require('./config.js');
let fileWatcher = null;
module.exports.start = () => {
startFileWatcher();
}
module.exports.stop = () => {
if (fileWatcher)
fileWatcher.close();
}
function startFileWatcher() {
let configObj = config.get();
let resourcesDir = configObj.cli.resourcesPath?.replace(/^\//, '');
if (!fs.existsSync(resourcesDir))
return;
let exclude = [
'(^|[\\/\\\\])\\..', // dot files
'node_modules.*',
'^bin.*',
'.*.log$'
];
if(configObj?.cli?.autoReloadExclude) {
exclude.push(configObj.cli.autoReloadExclude);
}
let watcherOptions = {
ignoreInitial: true,
ignored: new RegExp(exclude.join('|'))
};
fileWatcher = chokidar.watch(resourcesDir, watcherOptions)
.on('all', (event, path) => {
if(['unlink', 'unlinkDir'].includes(event))
return;
websocket.dispatch('neuDev_reloadApp'); // Send Message To Reload the Application
});
}