如何在使用gulp-filter时修复类型错误?

前端之家收集整理的这篇文章主要介绍了如何在使用gulp-filter时修复类型错误?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在模仿John Papa在Gulp上出色的Pluralsight课程的代码.

当我使用John的课程中显示代码时:

.pipe(jsFilter)
.pipe($.uglify())
.pipe(jsFilter.restore())

我在第3行代码上遇到错误

TypeError: Object #<StreamFilter> has no method 'restore'

当我使用gulp-filter自述文件显示代码

.pipe(jsFilter)
.pipe($.uglify())
.pipe(jsFilter.restore)

我收到一个错误,它不能管道到undefined.

根据我在网上找到的内容,这两种模式都适用于其他模式.关于为什么会发生这种情况的任何线索?

这是整个任务,如果这有帮助,并且控制台日志记录指示在过滤器恢复调用之前一切正常.

如果有帮助,这是整个任务:

gulp.task('build-dist',['inject','templatecache'],function() {
    log('Building the distribution files in the /dist folder');

    var assets = $.useref.assets({searchPath: './'});
    var templateCache = config.temp + config.templateCache.file;
    var jsFilter = $.filter('**/*.js');

    return gulp
        .src(config.index)
        .pipe($.plumber({errorHandler: onError}))
        .pipe($.inject(gulp.src(templateCache,{read: false}),{
            starttag: '<!-- inject:templates:js -->'
        }))
        .pipe(assets)
        .pipe(jsFilter)
        .pipe($.uglify())
        .pipe(jsFilter.restore())
        .pipe(assets.restore())
        .pipe($.useref())
        .pipe(gulp.dest(config.dist));
});

解决方法

恢复工作的方式在gulp-filter的2.x和3.x版本之间发生了变化.

您似乎正在使用3.x分支,因此为了使用恢复,您必须在定义过滤器时将restore选项设置为true:

var jsFilter = $.filter('**/*.js',{restore: true});

那你就能做到

.pipe(jsFilter.restore)

有关更多信息,请查看文档的此部分以获取最新版本的gulp-filter:

https://github.com/sindresorhus/gulp-filter/tree/v3.0.1#restoring-filtered-files

猜你在找的JavaScript相关文章