如何在grunt任务中的子进程中运行命令?

时间:2014-07-31 08:58:20

标签: gruntjs child-process

我想编写一个grunt任务,它将启动一个服务器,并根据该服务器运行一些测试:

grunt.initConfig({
    shell: {
      sbtRun: {
        options: {
          stdout: true
        },
        command: './sbt run'
      }
   }
});

grunt.loadNpmTasks('grunt-shell');

grunt.registerTask('run-test-only', ...);

grunt.registerTask('start-server-and-test', ['shell:sbtRun', 'run-test-only']);

但问题是,任务./sbt run没有在守护进程中运行。我跑的时候:

grunt start-server-and-test

它将永远阻止shell:sbtRun任务。

有没有办法在子进程中启动它?那么第二个任务run-test-only将被调用,服务器将在测试后自动销毁?

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。我想连接到数据库并将查询结果存储在.csv中。我创建了一个单独的文件来完成所有工作,我使用以下命令行成功运行该文件:

node filename.js

我使用grunt-shell和grunt-exec来运行此命令,但每次我看到同样的错误:

const child = require('child_process').exec;

然后,我找到了另一个grunt插件,即grunt-execute,它能够创建一个子进程并且任务已成功完成。你可以在这里找到更多关于grunt-execute的信息,https://www.npmjs.com/package/grunt-execute

希望这有帮助。