执行过npm install命令的vue-element-admin源码
康凯
2022-05-20 aa4c235a8ca67ea8b731f90c951a465e92c0a865
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
var reorder = require('./lib/reorder');
var respawn = require('./lib/respawn');
var remover = require('./lib/remover');
 
var FORBID_RESPAWNING_FLAG = '--no-respawning';
 
module.exports = function(flags, argv, forcedFlags, execute) {
  if (!flags) {
    throw new Error('You must specify flags to respawn with.');
  }
  if (!argv) {
    throw new Error('You must specify an argv array.');
  }
 
  if (typeof forcedFlags === 'function') {
    execute = forcedFlags;
    forcedFlags = [];
  }
 
  if (typeof forcedFlags === 'string') {
    forcedFlags = [forcedFlags];
  }
 
  if (!Array.isArray(forcedFlags)) {
    forcedFlags = [];
  }
 
  var index = argv.indexOf(FORBID_RESPAWNING_FLAG);
  if (index >= 0) {
    argv = argv.slice(0, index).concat(argv.slice(index + 1));
    argv = remover(flags, argv);
    execute(true, process, argv);
    return;
  }
 
  var proc = process;
  var reordered = reorder(flags, argv);
  var ready = JSON.stringify(argv) === JSON.stringify(reordered);
 
  if (forcedFlags.length) {
    reordered = reordered.slice(0, 1)
      .concat(forcedFlags)
      .concat(reordered.slice(1));
    ready = false;
  }
 
  if (!ready) {
    reordered.push(FORBID_RESPAWNING_FLAG);
    proc = respawn(reordered);
  }
  execute(ready, proc, reordered);
};