我的Node Webpack项目使用了三个Babel库。这些库有什么区别,它们如何被使用?
"dependencies": {
"babel-runtime": "^5.8.24"
}
"dev-dependencies": {
"babel": "^5.8.23",
"babel-core": "^5.8.23"
}
我的Node Webpack项目使用了三个Babel库。这些库有什么区别,它们如何被使用?
"dependencies": {
"babel-runtime": "^5.8.24"
}
"dev-dependencies": {
"babel": "^5.8.23",
"babel-core": "^5.8.23"
}
babel-core
是API接口,对于版本5来说,babel
包是CLI命令的依赖,并且依赖于 babel-core
。而对于版本6来说,babel-cli
是CLI命令,并且CLI二进制命令仍然为 babel
,而 babel
包则不再扮演任何角色。我猜测 babel-runtime
只是运行时环境(填充和辅助程序),用于支持已经被转换的代码。
babel-runtime
和babel-polyfill
之间的区别感兴趣的人,请参考以下链接:https://dev59.com/TlwZ5IYBdhLWcg3wJ9jN - user1429007简述:需要比较的内容包括:
从https://babeljs.io/blog/2015/10/31/setting-up-babel-6了解到:
现在,我们将它分成了两个不同的包:babel-cli和babel-core。
如果你想要使用Babel CLI,则可以安装babel-cli;如果你想要使用Node API,可以安装babel-core。
babel-runtime只允许polyfill,而不会污染全局空间,这与babel-polyfill不同。来源自http://babeljs.io/docs/plugins/transform-runtime/:
[babel-runtime]会自动为您的代码打polyfill,同时不会污染全局。 (该插件在库/工具中推荐使用)
如果使用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通过改变全局变量来实现相同的目标,而babel-runtime则是以模块化的方式实现。除非你正在开发库,否则建议使用polyfill。
Babel 6的六件事已经很好地解释了,引用一下:
npm包babel不再存在。相反,Babel被分成多个包:
babel-cli,包含babel命令行界面 babel-core,包含Node API和require hook babel-polyfill,当需要时,提供完整的ES2015环境。为避免意外冲突,请确保从package.json中删除任何先前的Babel包(如babel、babel-core等),然后使用npm卸载它们。