首页 > 解决方案 > 在生成同步子进程上触发并行节点进度条

问题描述

我基本上是在尝试围绕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);
}

现在我的问题是——

请帮助我指导正确的方向如何实现上述目标!

标签: node.jsnpmprogresschild-processspawn

解决方案


推荐阅读