解决在Babel

时间:2018-10-10 07:28:24

标签: javascript gulp babel

我想将ES6转换为ES5以用于浏览器使用(IE)。由于我需要一些填充料,因此设置了"useBuiltIns": "usage"

{
  "sourceType": "script",
  "ignore": ["gulpfile.js"],
  "presets": [
    ["@babel/preset-env", 
      { "useBuiltIns": "usage" }
    ]
  ]
}

但是输出文件的开头包含require条语句:

require("core-js/modules/es7.promise.finally");
require("core-js/modules/es6.function.name");
require("core-js/modules/es6.weak-map");
// ...

为什么不将Babel 7嵌入这些文件?据我了解the documentation of sourceType,我们有script供浏览器使用,因此我只得到一个捆绑文件,没有任何模块。

2 个答案:

答案 0 :(得分:1)

Babel不是捆绑器,它只是现代ES的编译器。

您将需要Webpack或Parcel之类的捆绑器来转换D/ConversationActivity: onStart函数调用和/或require()语句。

答案 1 :(得分:0)

我结束了在gulp任务中使用带有Babbel插件的browserify

const gulp = require("gulp"),
  babel = require("gulp-babel"),
  browserify = require("browserify"),
  fs = require("fs");

gulp.task("js", () => {
  let outputFolder = 'dist'
  let targetFile = "customization.js"
  const js = "src/js"
  let jsSources = [`${js}/polyfills.js`, `${js}/custom.js`]

  return browserify(jsSources)
    .transform("babelify")
    .bundle()
    .pipe(fs.createWriteStream(`${outputFolder}/js/${targetFile}`))
})

这将创建一个没有任何模块加载程序的包。