首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >gulp: babelify运行时没有错误,但是没有转换我的节点模块

gulp: babelify运行时没有错误,但是没有转换我的节点模块
EN

Stack Overflow用户
提问于 2015-11-02 17:53:47
回答 1查看 1.3K关注 0票数 3

我是:

  • 褐化捆绑
  • 用babel将ES6转换为ES5
  • 用uglifyjs缩小ES5

以前起作用了。然而,最近我从uglifyjs那里收到了抱怨ES6语法的错误,好像babelify实际上还没有运行:

代码语言:javascript
运行
复制
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) 不转换代码?

请给出实际的答案,而不是剪切和粘贴吞咽文件。

EN

回答 1

Stack Overflow用户

发布于 2015-11-02 18:12:46

问题是使用npm模块:默认情况下,babel忽略npm模块。因此,如果模块是ES6,当uglify运行时,它们仍然处于ES6中。

升级babel和使用选项已经解决了一些问题:

代码语言:javascript
运行
复制
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中。注意,语法很奇怪,并使用数组而不是对象将项与其选项匹配:

代码语言:javascript
运行
复制
{
  "browserify": {
    "transform": [
       [
         "babelify", 
          { "presets": ["es2015"] }
       ]
     ]
  }
}

有关更多信息,请参见把医生变成婴儿

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33483850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档