与@ babel / env和@ babel / preset-env之间的babel预设配置混淆

时间:2019-05-13 08:06:57

标签: javascript babeljs

我尝试配置环境以使用babel和webpack开发javascript。

但是我不了解关于presets的babel配置。

Usage Guide中,我们可以看到带有"@babel/env"的预设。

但是在文档中的其他位置,我无法看到更多这样的配置,而不是"@babel/preset-env"。例如这里https://babeljs.io/docs/en/babel-preset-env

我的英语不好,我无法找到"@babel/env""@babel/preset-env"之间的区别,我确实一次又一次地阅读文档,没有运气。

也许他们是一样的吗?

顺便说一句,目标集似乎不起作用,删除目标也可以在ie9 +(或默认目标是什么)中正常运行,如果我希望将es6脚本转换为兼容ie8,那么它就不是最重要的了。

这是我的项目sdk-dev-env

// https://babeljs.io/docs/en/configuration
const presets = [
  [
    '@babel/env',
    {
      // https://babeljs.io/docs/en/babel-preset-env#targets
      // TODO: how to compatibilite with ie 8
      targets: {
        ie: '8',
        edge: '17',
        firefox: '60',
        chrome: '67',
        safari: '11.1'
        /**
         * you can also set browsers in package.json
         * "browserslist": ["last 3 versions"]
         * relative links:
         * https://github.com/browserslist/browserslist
         */
      },
      corejs: '3',
      // corejs: { version: 3, proposals: true },
      /**
       * https://babeljs.io/docs/en/usage#polyfill
       * https://github.com/zloirock/core-js#babelpreset-env
       * "usage" will practically apply the last optimization mentioned above where you only include the polyfills you need
       */
      useBuiltIns: 'usage'
    }
  ]
]
const plugins = []

if (process.env['ENV'] === 'prod') {
  // plugins.push(...);
}
module.exports = { presets, plugins }

我希望知道它们是相同的还是不同的,

以及将babeljs 7.4与core-js 3结合使用的最佳方法

1 个答案:

答案 0 :(得分:0)

  

也许他们是一样的吗?

是的,preset-是可选的。既然你在做

presets: ["@babel/env"]

Babel已经知道它是一个预设,因此它将preset-自动添加到模块名称中。