巴贝尔与巴贝尔核心与巴贝尔运行时间
我的节点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这里比较的东西是:
- babel(用于5.xx)vs babel-cli + babel-core(用于6.xx)
- 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。