shelljs:exec npm命令花费很多时间(等待超时)

时间:2018-09-26 14:35:50

标签: node.js git npm child-process shelljs

我有一个git-hook,如果有新东西要掌握,它应该使npm版本预发行。

因此,为了不受环境影响,我决定为此使用Nodejs。

首先,我尝试使用child_process(spawn和exec),但是后来我发现了shelljs,这实际上是我所需要的。

#! /usr/bin/env node
var shell = require("shelljs");

shell.set('-e');

var branch = shell.exec('git rev-parse --abbrev-ref HEAD').stdout;

if (branch.trim() == "master") {
  var prerelease = shell.exec('npm version prerelease').stdout;

  console.log('prerelease: ' + prerelease);

  shell.exec('git push --no-verify');

  console.log('done');

}

shell.exit(0);

我的问题是,尽管已显示出他已完成的指示符(在5.80秒内完成),但脚本始终在执行npm版本预发布时挂起。该过程一直等待到超时,然后返回在此过程中缓冲的日志。

$ git push
husky > pre-push (node v8.11.2)
master
yarn run v1.5.1
$ npm version prerelease
v1.0.0-55
Done in 5.80s.
prerelease: yarn run v1.5.1
$ npm version prerelease
v1.0.0-55
Done in 5.80s.

To https://git.repository.com/dummy/dummyproject.git
   34e3bg3..9cf5241  master -> master

除了设置较低的超时时间以外,有人知道我能做什么吗?

有趣的是,这仅在npm调用中发生。将npm -v替换为npm预发行版也将挂起,直到超时。

编辑:如果我直接通过CLI(我使用git bash)(节点script.js)调用CLI脚本,则npm版本预发行版的执行不会挂起。

0 个答案:

没有答案