使用gulp-watch和babel.js

时间:2015-04-07 13:41:49

标签: node.js gulp gulp-watch babeljs

以下是Gulp ES6转换任务。它工作正常,但我正在尝试用gulp-watch插件替换gulp.watch,以便捕获新文件。问题是gulp-watch没有告诉我gulp.watch在回调中做了什么,我不知道该怎么办。

这是我原来的工作任务:

var gulp = require('gulp'),
    rename = require('gulp-rename'),
    plumber = require('gulp-plumber'),
    gprint = require('gulp-print'),
    notify = require('gulp-notify'),
    babel = require('gulp-babel');

gulp.task('default', function() {
    return gulp.watch('../**/**-es6.js', function(obj){
        if (obj.type === 'changed') {
            gulp.src(obj.path, { base: './' })
                .pipe(plumber({
                    errorHandler: function (error) { /* elided */ }
                }))
                .pipe(babel())
                .pipe(rename(function (path) {
                    path.basename = path.basename.replace(/-es6$/, '');
                }))
                .pipe(gulp.dest(''))
                .pipe(gprint(function(filePath){ return "File processed: " + filePath; }));
        }
    });
});

到目前为止,这就是gulp-watch的所有内容:

var gulp = require('gulp'),
    rename = require('gulp-rename'),
    plumber = require('gulp-plumber'),
    gprint = require('gulp-print'),
    notify = require('gulp-notify'),
    babel = require('gulp-babel'),
    gWatch = require('gulp-watch');

gulp.task('default', function() {
    return gWatch('../**/**-es6.js', function(obj){
        console.log('watch event - ', Object.keys(obj).join(','));
        console.log('watch event - ', obj.event);
        console.log('watch event - ', obj.base);

        return;
        if (obj.type === 'changed') {
            gulp.src(obj.path, { base: './' })
                .pipe(plumber({
                    errorHandler: function (error) { /* elided */ }
                }))
                .pipe(babel())
                .pipe(rename(function (path) {
                    path.basename = path.basename.replace(/-es6$/, '');
                }))
                .pipe(gulp.dest(''))
                .pipe(gprint(function(filePath){ return "File processed: " + filePath; }));
        }
    });
});

日志记录的输出是:

  

观看活动 - 历史,密码,基数,统计,_内容,活动

     

观看活动 - 更改

     

观看活动 - ..

如何让gulp-watch给我以前的信息,或者,如何更改我的任务代码以使gulp-watch再次使用?

1 个答案:

答案 0 :(得分:2)

根据testsobj.relative应包含相对文件名,而obj.path仍将保留绝对文件路径,就像在原始代码中一样。此外,回调接受一个Vinyl对象,在此处记录:https://github.com/wearefractal/vinyl

您可能无法在日志中看到它们,因为Object.keys并未枚举原型链中的属性。

使用for..in循环,您应该能够看到所有属性。