2015-12-14 171 views
14

我想同时使用Browserify和Babel与我的JavaScript。为此,我创建了一个大口的任务Browserify和Babel吞噬任务

gulp.task('babel', function() { 
    return gulp.src('_babel/*.js') 
     .pipe(browserify({ insertGlobals : true })) 
     .pipe(babel({ presets: ['es2015'] })) 
     .pipe(gulp.dest('_dev/js')); 
}); 

不幸的是,当我想我的代码中使用import,我得到一个错误:

ParseError: 'import' and 'export' may only appear at the top level 

我主要的js文件是非常简单的:

import 'directives/toggleClass'; 

我猜这是因为巴贝尔(它的use strict除外),但我能做什么?

+1

是否改变顺序(在browserify之前放置babel),有帮助吗? – JCOC611

+0

不,我试过了,删除'babel'也没有帮助。 –

+0

不是答案,而是您是否尝试使用https://github.com/babel/babelify? – Misiur

回答

10

Babel对Browserify进行官方转换,调用babelify,如果使用babel和browserify,应尽可能使用它。

直接删除babel的使用,并将babelify作为browserify的转换插件。有许多方法可以配置browserify,但在您的package.json中指定配置可能是最简单的。

你一饮而尽任务将被简化

gulp.task('babel', function() { 
    return gulp.src('_babel/*.js') 
     .pipe(browserify({ insertGlobals : true })) 
     .pipe(gulp.dest('_dev/js')); 
}); 

Browserify也暴露的方法来做到这一点编程,所以你就可以从你的一口任务(丢弃包配置中配置的捆绑,虽然使用软件包对此非常合适),检查他们的文档和实验,我之前完成了它,但从我使用gulp开始已经很长时间了(在这里使用gulp只是一个你不需要的并发症,但我希望你正在使用它在你的构建管道中的其他地方可能更有帮助)。