我是:
以前起作用了。然而,最近我从uglifyjs那里收到了抱怨ES6语法的错误,好像babelify实际上还没有运行:
gulp.task('js', function() {
// Browserify/bundle the JS.
browserify({
entries: './public/js/src/index.js',
insertGlobals : true,
fullPaths: true, // For discify
debug: ! isProduction
}).transform(babelify)
.bundle()
.pipe(source('index.js'))
.pipe(buffer())
.pipe(uglify())
.pipe(gulp.dest('./public/js/dist'))
});为什么transform(babelify) 不转换代码?
请给出实际的答案,而不是剪切和粘贴吞咽文件。
发布于 2015-11-02 18:12:46
问题是使用npm模块:默认情况下,babel忽略npm模块。因此,如果模块是ES6,当uglify运行时,它们仍然处于ES6中。
升级babel和使用选项已经解决了一些问题:
gulp.task('js', function() {
browserify({
entries: './public/js/src/index.js',
insertGlobals : true,
fullPaths: true, // For discify
debug: ! isProduction
}).transform(babelify, {
presets: ['es2015'],
compact: false,
global: true
})
.bundle()
.pipe(source('index.js'))
.pipe(buffer())
.pipe(uglify())
.pipe(gulp.dest('./public/js/dist'))
})另一个选择是将它放在私有模块中的package.json中。注意,语法很奇怪,并使用数组而不是对象将项与其选项匹配:
{
"browserify": {
"transform": [
[
"babelify",
{ "presets": ["es2015"] }
]
]
}
}有关更多信息,请参见把医生变成婴儿。
https://stackoverflow.com/questions/33483850
复制相似问题