node.js - 作为生成 Node 进程启动时显示来自 GIt 的反馈

标签 node.js git yeoman-generator

我正在尝试通过创建一个新的 yeoman 生成器来为新项目设置一个样板,我需要做的一件事是将一个大型 Git 存储库设置为子模块,然后在某个标签处 checkout 。我一切正常,但我想提供一些有关 checkout 的进度反馈。

当您手动运行submodule add时,您会得到如下更新:

Receiving objects:  14% (22925/163744), 5.41 MiB | 1.30 MiB/s

我希望在添加 Node 脚本子模块期间显示该输出,但我似乎无法让它显示任何内容。这是我所拥有的:

MyGenerator.prototype.addSubmodule = function() {
  var done = this.async();

  console.log('Initializing submodule. This may take a minute.');

  var git = spawn('git', ['submodule', 'add', 'git://github.com/PathTo/Submodule.git', 'submodule']);$

  git.stdout.on('data', function(data){
    console.log(data);
  });

  git.stderr.on('data', function(data){
    console.log(data);
  });

  git.on('close', function(){$
    process.chdir('submodule');$

    console.log('Checking out %s branch of Submodule', this.submoduleVersion);

    var checkout = spawn('git', ['checkout', this.submoduleVersion]);

    checkout.stdout.on('data', function(data) {
      console.log(data);
    });

    checkout.on('close', function() {
      process.chdir('../');
      done();
    });

  });

提前致谢。

最佳答案

这与 Running shell script in rails only outputs the 1 line 相关,但似乎 git submodule 不支持其中描述的 --progress 选项。您应该能够通过让 Git 进程从当前进程继承 stderr 文件描述符(也可以同时抛出 stdout)来获得所需的进度输出,根据 child_process documentation可以这样做:

var git = spawn(
  'git', 
  ['submodule', 'add', 'git://github.com/PathTo/Submodule.git', 'submodule'],
  { stdio: ['pipe', process.stdout, process.stderr] );

关于node.js - 作为生成 Node 进程启动时显示来自 GIt 的反馈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21505548/

相关文章:

node.js - Node.js 中的集群模块

javascript - JS Slice 仅删除位于构造函数中的项目

git - 我如何让 git 在 Windows 中显示命令行帮助?

Git interactive rebase 没有提交可供选择

npm - 创建 Yeoman 生成器后, `npm install` 是否应该需要 10 分钟才能运行,还是我做错了什么?

webstorm - Webstorm 的 Yeoman 生成器代码高亮显示

javascript - 网站中的javascript与node.js服务器之间的POST请求

java - HttpURLConnection 不向服务器发送 cookie 值

git - 如何将终端的 Git Bash 选项更改为 xterm-256color

node.js - 在生成器完成后调用 yeoman 生成器