如何从grunt任务中运行node_modules中的脚本?

时间:2014-05-17 01:59:05

标签: javascript gruntjs

我想简化从命令行运行测试套件的方法。因此,我将以下grunt-shell任务添加到Gruntfile.js

module.exports = function( grunt ) {

  grunt.initConfig(
    {
      shell : {
        e2e : {
          command : "./node_modules/protractor/bin/protractor protractor_conf.js"
        }
      }
    }
  );

  grunt.loadNpmTasks( "grunt-shell" );

  grunt.registerTask( "e2e", ["shell:e2e"] );
};

当我运行任务时,我收到错误:

  

'.' is not recognized as an internal or external command, operable program or batch file.

我发现的运行shell命令的所有示例都运行了全局可访问的二进制文件,但我想启动本地安装的量角器二进制文件。

我在Windows上使用bash,以防万一。

2 个答案:

答案 0 :(得分:1)

我正在研究OSX ......但是它仍然适用于你?

我刚在Gruntfile中提供了一个绝对路径:

module.exports = function(grunt) {

    grunt.initConfig({
        shell: {
            test: {
                // command: 'sh /Users/default/Sites/dev/test.sh'
                command: 'node /Users/default/Sites/dev/test.js'
            }
        }
    });

    grunt.loadNpmTasks('grunt-shell');
    grunt.registerTask('default', ['shell']);
};

这为我提供了正确的输出。

我遇到的类似问题的其他一些有用的任务:

grunt-execute,grunt-run

答案 1 :(得分:0)

您可以将protractor作为参数传递给node来调用它,如下所示:

module.exports = function( grunt ) {

  grunt.initConfig(
    {
      shell : {
        e2e : {
          command : "node ./node_modules/protractor/bin/protractor protractor_conf.js"
        }
      }
    }
  );

  grunt.loadNpmTasks( "grunt-shell" );

  grunt.registerTask( "e2e", ["shell:e2e"] );
};