39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | # capture-exit
 | ||
|  | 
 | ||
|  | [](https://ci.appveyor.com/project/embercli/capture-exit/branch/master) | ||
|  | [](https://travis-ci.org/ember-cli/capture-exit) | ||
|  | 
 | ||
|  | Allow cooprative async exit handlers, we unfortunately must hijack | ||
|  | process.exit. | ||
|  | 
 | ||
|  | It allows a handler to ensure exit, without that exit handler impeding other | ||
|  | similar handlers | ||
|  | 
 | ||
|  | for example, see: [sindresorhus/ora#27](https://github.com/sindresorhus/ora/issues/27) | ||
|  | 
 | ||
|  | Differences between `process.on('exit')` and `captureExit.onExit(...)` => https://github.com/ember-cli/capture-exit/issues/12 | ||
|  | 
 | ||
|  | 
 | ||
|  | ### Installation
 | ||
|  | 
 | ||
|  | ```sh | ||
|  | yarn add capture-exit | ||
|  | // or | ||
|  | npm install --save capture-exit | ||
|  | ``` | ||
|  | 
 | ||
|  | ### Usage
 | ||
|  | 
 | ||
|  | ```js | ||
|  | // as early in startup as possible | ||
|  | require('capture-exit').captureExit(); | ||
|  | 
 | ||
|  | // when you want to schedule some work on exit: | ||
|  | function onExit() { | ||
|  |   return something.processWillExit(); // you can return promises, which will pause exit until fulfilled | ||
|  | } | ||
|  | 
 | ||
|  | require('capture-exit').onExit(onExit); // add an exit handler | ||
|  | require('capture-exit').offExit(onExit); // allows one to remove an exit handle if it is not longer required | ||
|  | ``` |