GulpJs - 添加browserify,重新执行并重新启动到karma gulp任务

时间:2015-08-20 13:34:13

标签: gulp karma-jasmine gulp-watch

我目前使用以下命令

  • 将我的所有测试脚本添加到suite.js
  • 转换我的jsx
  • 使用rewireify添加用于测试的getter和setter方法

    browserify -e app/src/tests/suites.js -t reactify -t rewireify -o app/src/tests/bundle.js
    

然后:

karma start

每次我对代码进行更改时都必须运行此命令。任何人都可以告诉我如何在每次保存的时候在手表任务中设置这个吗?

非常感谢

编辑:

gulp-concat会是一个选项,就像这样吗?

gulp.task('test', function () {
gulp.src([
    './App/src/tests/**/*.js'
]).pipe(concat('suites.js'))
    .pipe(rewireify())
    .pipe(reactify())
    .pipe(gulp.dest('./App/src/tests/concatBundle.js'))
    .pipe(karma({
        configFile: 'karma.conf.js',
        action: 'run'
    }))
    .on('error', function(err) {
        throw err;
    });
});

1 个答案:

答案 0 :(得分:0)

GulpJs只是一堆用Node编写的代码,因此您可以使用gulp文件中的任何Node代码。您可以使用child_process.spawn运行任意命令。例如,您可以在监视任务中包含类似以下内容的内容。 Node documentation

var spawn = require('child_process').spawn,
    cmd = spawn('browserify', ['-e', 'app/src/tests/suites.js', '-t', 'reactify', '-t', <... list each arg as an array item ...>] );

spawn.stdout.on('data', function (data) {
  console.log('stdout: ' + data);
});

spawn.stderr.on('data', function (data) {
  console.log('stderr: ' + data);
});

spawn.on('close', function (code) {
  console.log('child process exited with code ' + code);
  //Your command is finished here... so you could kick off another command like 'karma start'
});