gpt4 book ai didi

javascript - rollupjs - babelHelpers 对象未创建

转载 作者:行者123 更新时间:2023-12-03 05:30:04 31 4
gpt4 key购买 nike

我正在使用 rollup 和 babel 来转译一些 ES6 代码并将结果捆绑到一个文件中,但我遇到了 babelHelpers 对象的一些问题。

rollup.config.js:

export default {
entry: './src/js/core.js',
dest: './dist/output.js',
format: 'iife',
plugins: [babel({
externalHelpers: true,
runtimeHelpers: true,
presets: ["es2015-rollup"]
})],
treeshake: false,
useStrict: true
};

.babelrc:

{
"presets": ["es2015-rollup"],
"plugins": [
"transform-class-properties",
"transform-es2015-classes",
"external-helpers-2"
]
}

以及 package.json 的一部分:

"scripts": {
"start": "npm-run-all --parallel rollup:watch lint:watch",
"rollup": "rollup -c",
"rollup:watch": "rollup -c -w",
"lint": "esw rollup.config.* src/js/** --color",
"lint:watch": "npm run lint -- --watch"
},
"dependencies": {
"babel-helpers": "^6.16.0",
"babel-plugin-external-helpers": "^6.18.0",
"babel-plugin-external-helpers-2": "^6.3.13",
"babel-plugin-transform-class-properties": "^6.19.0",
"babel-plugin-transform-es2015-classes": "^6.18.0",
"babel-plugin-transform-runtime": "^6.15.0",
"babel-polyfill": "^6.16.0",
"babel-preset-es2015-rollup": "^1.2.0",
"babel-preset-latest": "^6.16.0",
"eslint": "^3.11.1",
"eslint-plugin-import": "^2.2.0",
"eslint-watch": "^2.1.14",
"npm-run-all": "^3.1.2",
"rollup": "^0.36.4",
"rollup-plugin-babel": "^2.6.1",
"rollup-plugin-uglify": "^1.0.1",
"rollup-watch": "^2.5.0"
}

核心.js:

var configOptions = {
range: [0, 5],
arg: "speak",
options: ["listen", "mute", "speak"]
};

function updateOptions(opt) {
if (configOptions.range == undefined) {
configOptions.range = opt.range;
}
}

updateOptions({});

class Hello {
print() {
}
}

new Hello().print();

捆绑输出:

(function () {
'use strict';

var configOptions = {
range: [0, 5],
arg: "speak",
options: ["listen", "mute", "speak"]
};

function updateOptions(opt) {
if (configOptions.range == undefined) {
configOptions.range = opt.range;
}
}

updateOptions({});

var Hello = function () {
function Hello() {
babelHelpers.classCallCheck(this, Hello);
}

babelHelpers.createClass(Hello, [{
key: "print",
value: function print() {}
}]);
return Hello;
}();

new Hello().print();

}());

正如你在 core.js 中看到的,我正在使用 ES6 类。我希望 babel 只为使用过的对象添加 polyfill。由于目前我只使用类,我希望 babel 只使用 checkClassCall 和其他函数来使“类”功能正常工作。但它为我的最终包添加了完整的 polyfill 功能。

所以我做了一些研究,发现了“external-helpers-2”和选项:外部助手:true运行时助手:true

它将所有 babel 功能打包在 babelHelpers 中,但我不知道如何使用最终 IIFE 顶部的所有函数生成对象。

编辑

如果我使用转换运行时,那么我会在控制台中得到这个

将“babel-runtime/helpers/classCallCheck”视为外部依赖项将“babel-runtime/helpers/createClass”视为外部依赖项options.globa 中没有为外部模块“babel-runtime/helpers/classCallCheck”提供名称ls – 猜测“_classCallCheck”options.globals 中没有为外部模块“babel-runtime/helpers/createClass”提供名称– 猜测“_createClass”

还将 _classCallCheck 和 _createClass 添加到最终汇总 IIFE 中的参数中

最佳答案

这就是我配置 babel 进行汇总的方式,可能对你有用:

{
presets : [['es2015', {"modules": false}]],
runtimeHelpers : true,
exclude : 'node_modules/**',
plugins : ["external-helpers"]
}

如果使用es2015而不是es2015-rollup非常重要

关于javascript - rollupjs - babelHelpers 对象未创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40982712/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com