无法使es6与Gulp一起工作

这让我疯狂,所以我希望有人可能会看到我失踪的东西。 提前谢谢你的帮助。

我有一个gulp文件,我已经通过npm,babel-core,babel-preset-es2015,babel-preset-react进行安装。 从网上调查和寄予厚望,即使这可能是不对的,我已经将gulp文件改名为gulpfile.babel.js,并且我已经创建了一个.babelrc文件。

{
  "presets": ["es2015"]
}

我正在使用浏览器同步,当我启动gulp任务时会加载html文件,但是我所拥有的index.js包含'import React ....'。 这个文件导致JS控制台中出现'Uncaught SyntaxError:Unexpected token import'错误。

我认为我有es2015 npm包应该照顾ES6语法?

在吞食文件中,我认为的任务就是要照顾到这一点;

// convert jsx to JS
gulp.task('babelFiles', function() {
    return gulp.src('js/*.(jsx|js)')
        .pipe(babel({
            compact: false
            }))
        .pipe(gulp.dest('js'))
        .pipe(browserSync.reload({
            stream: true
        }))
});

负责启动此项任务的吞噬任务是:

// Default task
gulp.task('default', ['babelFiles', 'browserSync']);

我很困惑这里有什么可能是错的?

任何想法将非常感激!


有两个问题:

  • Gulp似乎不支持你的文件扩展名掩码语法:

    gulp.src('js/*.(jsx|js)') // not working
    gulp.src('js/*.{js,jsx}') // working
    
  • 你从js目录管道到js目录,但由于没有匹配,因为问题(1)它让你相信巴贝尔不工作
  • 更新

    Gulp使用glob语法来匹配文件 - 根据glob语法,项目数量的限定符应该包含在( | )之前 - 在我们的例子中,下面的语法是有效的

    gulp.src('js/*.@(js|jsx)')
    

    其中@表示@之后的模式恰好匹配一个模式。

    在你的情况下,没有提供限定词

    链接地址: http://www.djcxy.com/p/40133.html

    上一篇: Can't get es6 to work with Gulp

    下一篇: C class name corresponding to an AXUIElement?