Gulp +汇总+ Babel:构建失败

时间:2018-02-15 16:24:45

标签: ecmascript-6 gulp babeljs rollupjs babel-polyfill

我想将我的旧模块重写为ESNext。为了捆绑它,我使用Rollup来编译它,当然我使用Babel。所有这一切都在Gulp中得到了解决。

到目前为止,所有这些都进展顺利,同时升级到Babel v7,Gulp v4和最新版本的汇总(v0.56.0)。但是现在,因为我打算在我的babel配置中包含useBuiltIns: true,所以我不必担心polyfilling,我得到汇总抛出的错误:

TypeError: Cannot read property 'code' of null
at error (/Users/robin.loeffel/Sites/misc/jz2/node_modules/rollup/dist/rollup.js:168:15)
at Object.error (/Users/robin.loeffel/Sites/misc/jz2/node_modules/rollup/dist/rollup.js:17916:21)
at /Users/robin.loeffel/Sites/misc/jz2/node_modules/rollup/dist/rollup.js:17925:29
at <anonymous>

你可以查看我的gulpfile here。这很简单。我使用rollup-stream与gulp集成,并使用rollup-plugin-babelrollup-plugin-uglifyrollup-plugin-node-resolverollup-plugin-commonjs作为插件。以下是我如何整合它的一个例子,如果你没有时间仔细研究整个事情:

gulp.task('make:iife:min', () => {
    return rollupStream({
        input: config.paths.index,
        output: {
            format: 'iife',
            name: 'jazzer'
        },
        plugins: [
            rollupNodeResolve(),
            rollupCommonJs(),
            rollupBabel(config.babel),
            rollupUglify()
        ],
        rollup: rollup
    })
    .pipe(source('jazzer.min.js'))
    .pipe(gulp.dest(config.paths.dist));
});

我的Babel配置如下:

{
    presets: [
        ['@babel/preset-env', {
            targets: {
                ie: 11,
                browsers: 'last 2 versions'
            },
            useBuiltIns: 'usage',
            modules: false,
            debug: true
        }]
    ],
    ignore: ['node_modules']
}

当我使用rollupNodeResolve注释掉该行时,禁用该插件会进行编译,但会向我发出警告,例如'regenerator-runtime/runtime' is imported by src/jazzer.js, but could not be resolved – treating it as an external dependency。评论ignore: ['node_modules']会导致Babel以太多的东西输入它并生成一个83 kb的捆绑 - 所以这也不是。

希望有人可以帮助我! here's整个回购,如果您想查看并亲眼看看。

1 个答案:

答案 0 :(得分:1)

这是rollup-plugin-babel中的一个错误。我已经为你提交了这个问题:https://github.com/rollup/rollup-plugin-babel/issues/192