javascript - Browserify 不捆绑 babel 模块
问题描述
在 gulp (v4) 中,我正在尝试使用 babel 为网站(也具有 es7 功能,例如Object.entries()
)转换多个 es6 模块,并将它们与 browserify 捆绑在一起。由于某种原因,Browserify 似乎没有从 runtime-corejs 加载 babel polyfill。相反,这出现在我的输出文件中:
require("core-js/modules/es.object.to-string.js");
...
require("core-js/modules/es.string.match.js");
var _fromEntries = _interopRequireDefault(require("/absolutePathOnMyLocalMachineToMyProjectRoot/node_modules/@babel/runtime-corejs3/core-js/object/from-entries.js"));
...
var _entries = _interopRequireDefault(require("/absolutePathOnMyLocalMachineToMyProjectRoot/node_modules/@babel/runtime-corejs3/core-js/instance/entries.js"));
var _config = require("../config.js");
这导致TypeError: _entries.default(...) is undefined
在运行时。我希望所有这些要求都已经加载?
由于我正在使用"useBuiltIns": "usage"
,我目前没有在 index.js 文件的顶部导入 core-js 和 regenerator-runtime。然而,在导入它们并设置时,结果是相同的"seBuiltIns": "entry"
。
问题
请有人指出如何配置 babel 和 browserify 以便在输出文件中包含所有必需的 polyfill,而不是在客户端浏览器中使用路径不可用的 require 语句?
我的配置和 gulp 任务如下。
吞咽 v4 任务
const jsLegacy = function () {
return browserify({
entries: "./src/index.js"
})
.transform(babelify)
.bundle()
.pipe(source( 'bundleIndex.js' ))
.pipe(buffer())
.pipe(gulp.dest("./dist/"))
}
babel.config.json
{
"presets": [
[
"@babel/preset-env",
{
"debug": true,
"useBuiltIns": "usage",
"corejs": 3,
"modules": "commonjs"
}
]
],
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"absoluteRuntime": true,
"corejs": { "version": 3, "proposals": true },
"helpers": true,
"regenerator": true,
"version": "^7.15.4"
}
]
]
}
我的 package.json 的一部分
{
"devDependencies": {
"@babel/plugin-transform-runtime": "^7.15.0",
"@babel/preset-env": "^7.15.6",
"babelify": "^10.0.0",
"browserify": "^17.0.0",
"event-stream": "^4.0.1",
"gulp": "^4.0.2",
"gulp-babel": "^8.0.0",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0"
},
"dependencies": {
"@babel/runtime": "^7.15.4",
"@babel/runtime-corejs3": "^7.15.4",
"core-js": "^3.18.1",
"regenerator-runtime": "^0.13.9"
}
}
解决方案
推荐阅读
- ios - 在同一个标签栏项目上加载新的 viewController 不起作用
- azure - 端口 3389 不会在 azure vm 上打开
- arrays - 从谷歌表中的每个组中提取最大值
- python - Docker 容器监听 gitlab 提交
- sql-server - AWS Database Migration Service 导致问题 - SQL Server 作为源
- amazon-web-services - 如何在 AWS API Gateway 中启用 CORS
- react-native - 如何在 componentdidmount 中刷新屏幕(反应原生)?
- javascript - Angular PayPal 处理、子组件和生命周期
- javascript - 剩余不到 24 小时时显示倒计时
- ruby - 替换管道字符“|” 带行空格