2016-01-19 12 views
6

Tôi có một tác vụ gulp mẫu sử dụng trình báo cáo Mocha json. Tôi muốn viết rằng đầu ra json vào một tập tin. Sẽ đánh giá cao một số yếu tố đầu vào.cách ghi vào tập tin khi sử dụng gulp và mocha?

Đây là mã của tôi:

var gulp = require('gulp'); 
var mocha = require('gulp-mocha'); 
var util = require('gulp-util'); 

gulp.task('myreport', function() { 
    return gulp.src(['tests.js'], { read: false }) 
     .pipe(mocha({ reporter: 'json' })) //how do I write this to a file? 
     .on('error', util.log); 
}); 

Trả lời

3

tôi đã làm cho nó làm việc nhìn vào mã nguồn. Có vẻ như gulp-mocha không tuân theo đường ống gulp để đẩy nguồn của nó ra ngoài. Bạn có thể sử dụng process.stdout.write mặc dù tạm thời ánh xạ kết quả trong khi thực hiện tác vụ.

Đây là một ví dụ đơn giản.

var gulp = require('gulp'), 
    mocha = require('gulp-mocha'), 
    gutil = require('gulp-util'), 
    fs = require('fs'); 

gulp.task('test', function() { 
    //pipe process.stdout.write during the process 
    fs.writeFileSync('./test.json', ''); 
    process.stdout.write = function(chunk){ 
    fs.appendFile('./test.json', chunk); 
    }; 

    return gulp.src(['hello/a.js'], { read: false }) 
     .pipe(mocha({ reporter: 'json' })) 
     .on('error', gutil.log); 
}); 
+0

Điều này cũng ghi các bản in console.log vào tệp JSON, điều này làm cho vô dụng .. Bạn có cách giải quyết không? Cảm ơn! –

+1

@GalMargalit Thật không may, đây là giải pháp đơn giản để ánh xạ đầu ra vào một tệp. – Theodore

+0

:) cảm ơn nó là gọn gàng –

2

Sử dụng mochawesome phóng viên, bạn sẽ nhận được đầu ra JSON và nhiều hơn nữa: https://www.npmjs.com/package/mochawesome

Một lợi thế của việc sử dụng phóng viên này là bạn sẽ không phá vỡ dòng JSON văn bản của bạn về bài viết console.log vv .

.pipe(mocha({reporter: 'mochawesome'})) 

mochawesome screenshot

1

không thể bạn chỉ cần ống nó để gulp.dest?

.pipe(gulp.dest('./somewhere')); 
Các vấn đề liên quan