You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					94 lines
				
				2.5 KiB
			
		
		
			
		
	
	
					94 lines
				
				2.5 KiB
			| 
											3 years ago
										 | /** | ||
|  |  * 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; |