Запустить индикатор выполнения параллельного узла в дочернем процессе синхронизации порождения - PullRequest
0 голосов
/ 11 мая 2018

Я в основном пытаюсь построить свою собственную оболочку вокруг npm install package функциональности.

Я успешно написал оболочку функции установки, но теперь я хочу вызвать индикатор выполнения, когда я синхронизирую порождение дочернего процесса, который в основном устанавливает npm modules, вот мой код ниже

const spawn = require('cross-spawn');
const ProgressBar = require('progress');
const chalk = require('chalk');

public static installPkgs =
  (des: any, packages: string[], opts: any) => {
    const args: string[] = [];
    if (opts.save) {
      args.push('-S');
    }
    if (opts.saveDev) {
      args.push('-D');
    }
    if (opts.global) {
      args.push('-g');
    }
    const cliArgs: string[] = ['i'].concat(args, packages);

    if (typeof des === 'string') {
      process.stdout.write('\n' + chalk.yellow(des) + '\n');
    } else {
      process.stdout.write('');
    }

    const barOpts =  { 
                      width: 20, 
                      total: packages.length, 
                      clear: true
                     };

    const bar = new ProgressBar(' uploading [:bar] :percent :etas', barOpts);

    bar.tick(0);

    const bat = spawn.sync('npm', cliArgs, {stdio:'pipe'});

    bar.tick(bat.stdout.toString().length);
}

Теперь мои проблемы -

  • Я не уверен, стоит ли использовать packages.length для свойства total завершения тика индикатора выполнения
  • С момента появленияпроисходит синхронно, индикатор выполнения запускается после этого процесса, как я могу запустить его, как только модули npm будут загружены?

Пожалуйста, помогите мне направить в правильном направлении, как достичьвыше!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...