Blame view

node_modules/worker-farm/lib/fork.js 889 Bytes
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
  '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({ module: forkModule })
  
    // return a send() function for this child
    return {
        send  : child.send.bind(child)
      , child : child
    }
  }
  
  
  module.exports = fork