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.
		
		
		
		
			
				
					34 lines
				
				904 B
			
		
		
			
		
	
	
					34 lines
				
				904 B
			| 
								 
											4 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const childProcess = require('child_process')
							 | 
						||
| 
								 | 
							
								    , childModule  = require.resolve('./child/index')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function fork (forkModule, workerOptions) {
							 | 
						||
| 
								 | 
							
								  // suppress --debug / --inspect flags while preserving others (like --harmony)
							 | 
						||
| 
								 | 
							
								  let filteredArgs = process.execArgv.filter(function (v) {
							 | 
						||
| 
								 | 
							
								        return !(/^--(debug|inspect)/).test(v)
							 | 
						||
| 
								 | 
							
								      })
							 | 
						||
| 
								 | 
							
								    , options       = Object.assign({
							 | 
						||
| 
								 | 
							
								          execArgv : filteredArgs
							 | 
						||
| 
								 | 
							
								        , env      : process.env
							 | 
						||
| 
								 | 
							
								        , cwd      : process.cwd()
							 | 
						||
| 
								 | 
							
								      }, workerOptions)
							 | 
						||
| 
								 | 
							
								    , child         = childProcess.fork(childModule, process.argv, options)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  child.on('error', function() {
							 | 
						||
| 
								 | 
							
								    // this *should* be picked up by onExit and the operation requeued
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  child.send({ owner: 'farm', module: forkModule })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // return a send() function for this child
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								      send  : child.send.bind(child)
							 | 
						||
| 
								 | 
							
								    , child : child
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = fork
							 |