123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /**
- * 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;
|