1

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

到目前为止一切顺利,同时升级到 Babel v7、Gulp v4 和最新版本的 rollup (v0.56.0)。但是现在,由于我打算将其包含useBuiltIns: true在我的 babel 配置中,所以我不必担心 polyfill,我得到了 rollup 抛出的错误:

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 。这很简单。我rollup-stream用于与 gulp 的集成,并使用、rollup-plugin-babel和作为插件。如果您没有时间查看整个内容,这是我如何集成它的示例:rollup-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 的捆绑包——所以这也不是办法。

希望有人可以帮助我!这里整个 repo,如果你想亲自检查一下。

4

1 回答 1

2

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

于 2018-02-15T21:04:44.747 回答