Я в основном пытаюсь построить свою собственную оболочку вокруг 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 будут загружены?
Пожалуйста, помогите мне направить в правильном направлении, как достичьвыше!