巴贝尔与巴贝尔核心与巴贝尔运行时间

我的节点webpack项目使用三个babel库。 这些和它们之间的区别是什么?

"dependencies": { "babel-runtime": "^5.8.24" } "dev-dependencies": { "babel": "^5.8.23", "babel-core": "^5.8.23" } 

babel-core是API。 对于v5, babel包是CLI,依赖于babel-core 。 对于v6, babel-cli软件包是CLI(CLI bin命令仍然是babel ),而babel软件包没有做任何事情。 babel-runtime我想只是运行时(polyfill和helpers)来支持已经被转换的代码。

TL; DR这里比较的东西是:

  1. babel(用于5.xx)vs babel-cli + babel-core(用于6.xx)
  2. babel-polyfill(用于非库)vs babel-runtime + babel-plugin-transform-runtime(用于库)

https://babeljs.io/blog/2015/10/31/setting-up-babel-6

babel包是没有更多。 以前,这是整个编译器和所有的转换以及一些CLI工具,但这会导致不必要的大量下载,并且有点令人困惑。 现在我们把它分成两个独立的软件包:babel-cli和babel-core。

npm install –global babel-cli

要么

npm install –save-dev babel-core

如果你想从CLI使用Babel,你可以安装babel-cli,或者如果你想使用Node API,你可以安装babel-core。

babel-runtime只允许不污染全局空间的polyfill,不像污染你的全球空间的babel-polyfill。 从http://babeljs.io/docs/plugins/transform-runtime/

[babel-runtime]会自动填充代码而不会污染全局。 (这个插件是在库/工具中推荐的)

如果你使用babel-runtime,你也应该

npm install --save-dev babel-plugin-transform-runtime

在大多数情况下,您应该将babel-plugin-transform-runtime作为开发依赖项(使用–save-dev)和babel-runtime作为生产依赖项(使用–save)来安装。

转换插件通常只用于开发,但运行时本身将依赖于您部署/发布的代码。

而且,babel-runtime + babel-plugin-transform-runtime和babel-polyfill通常是相互排斥的 – 意味着你只能使用其中一个。 从这里的评论http://jamesknelson.com/the-six-things-you-need-to-know-about-babel-6/

你应该使用babel-polyfill或者babel-runtime。 它们是相互排斥的 – 除非你知道自己在做什么。 但他们本质上是一回事。 这些只是帮手。 babel-polyfill通过改变全局variables来实现相同的目标,而babel-runtime则是模块化的。 除非你正在开发一个库,否则我build议你使用polyfill。