mirror of
https://github.com/SrIzan10/nodemon.git
synced 2026-05-01 10:55:09 +00:00
I suspect, though not 100% sure, that this test fails because it was being required and when so, chokidar is already watching and thus fires before the config is loaded.
94 lines
2.5 KiB
JavaScript
94 lines
2.5 KiB
JavaScript
/**
|
|
* Manages the internal config of nodemon, checking for the state of support
|
|
* with fs.watch, how nodemon can watch files (using find or fs methods).
|
|
*
|
|
* This is *not* the user's config.
|
|
*/
|
|
var debug = require('debug')('nodemon');
|
|
var load = require('./load');
|
|
var rules = require('../rules');
|
|
var utils = require('../utils');
|
|
var pinVersion = require('../version').pin;
|
|
var command = require('./command');
|
|
var rulesToMonitor = require('../monitor/match').rulesToMonitor;
|
|
var bus = utils.bus;
|
|
|
|
function reset() {
|
|
rules.reset();
|
|
|
|
config.dirs = [];
|
|
config.options = { ignore: [], watch: [], monitor: [] };
|
|
config.lastStarted = 0;
|
|
config.loaded = [];
|
|
}
|
|
|
|
var config = {
|
|
run: false,
|
|
system: {
|
|
cwd: process.cwd(),
|
|
},
|
|
required: false,
|
|
dirs: [],
|
|
timeout: 1000,
|
|
options: {},
|
|
};
|
|
|
|
/**
|
|
* Take user defined settings, then detect the local machine capability, then
|
|
* look for local and global nodemon.json files and merge together the final
|
|
* settings with the config for nodemon.
|
|
*
|
|
* @param {Object} settings user defined settings for nodemon (typically on
|
|
* the cli)
|
|
* @param {Function} ready callback fired once the config is loaded
|
|
*/
|
|
config.load = function (settings, ready) {
|
|
reset();
|
|
var config = this;
|
|
load(settings, config.options, config, function (options) {
|
|
config.options = options;
|
|
|
|
if (options.watch.length === 0) {
|
|
// this is to catch when the watch is left blank
|
|
options.watch.push('*.*');
|
|
}
|
|
|
|
if (options['watch_interval']) { // jshint ignore:line
|
|
options.watchInterval = options['watch_interval']; // jshint ignore:line
|
|
}
|
|
|
|
config.watchInterval = options.watchInterval || null;
|
|
if (options.signal) {
|
|
config.signal = options.signal;
|
|
}
|
|
|
|
var cmd = command(config.options);
|
|
config.command = {
|
|
raw: cmd,
|
|
string: utils.stringify(cmd.executable, cmd.args),
|
|
};
|
|
|
|
// now run automatic checks on system adding to the config object
|
|
options.monitor = rulesToMonitor(options.watch, options.ignore, config);
|
|
|
|
var cwd = process.cwd();
|
|
debug('config: dirs', config.dirs);
|
|
if (config.dirs.length === 0) {
|
|
config.dirs.unshift(cwd);
|
|
}
|
|
|
|
bus.emit('config:update', config);
|
|
pinVersion().then(function () {
|
|
ready(config);
|
|
}).catch(e => {
|
|
// this doesn't help testing, but does give exposure on syntax errors
|
|
console.error(e.stack);
|
|
setTimeout(() => { throw e; }, 0);
|
|
});
|
|
});
|
|
};
|
|
|
|
config.reset = reset;
|
|
|
|
module.exports = config;
|