You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
classBork{//Property initializer syntaxinstanceProperty="bork";boundFunction=()=>{returnthis.instanceProperty;};//Static class propertiesstaticstaticProperty="babelIsCool";staticstaticFunction=function(){returnBork.staticProperty;};}letmyBork=newBork;//Property initializers are not on the prototype.console.log(myBork.__proto__.boundFunction);// > undefined//Bound functions are bound to the class instance.console.log(myBork.boundFunction.call(undefined));// > "bork"//Static function exists on the class.console.log(Bork.staticFunction());// > "babelIsCool"
这篇文章用于那些想要升级到 Babel7 的用户。
并不是每一处的改动都会影响你的项目,所以我们基于升级时可能对你的项目造成的破坏程度,对所有的改动做了一个排序。
针对所有 Babel
不再支持 Node.js 0.10, 0.12, 4 和 5。可参考:#[5025],#[5041],#[7755]。
移除年度预设用法
带有"env"的预设已经发布了一年多,现在它会完全取代以下所有用法:
移除 state 预设用法
详细的升级文档可参考:https://github.com/babel/babel/tree/master/packages/babel-preset-stage-0#babelpreset-stage-0。
或者是直接执行
npx babel-upgrade
可自动进行升级。移除了@babel/polyfill中的提议
...
包重命名
babylon
现在重命名为@babel/parser
在配置文件中,你仍然可以使用包名称的简写形式,但建议你能够用更清晰的全名称。
包命名空间
最重要的一个改动就是给所有的包加了命名空间。这样可以减少很多意外的或者故意的命名问题,可以与社区里的其它插件有一个清晰的区分,形成一个简单的命名规范。
你的依赖可能像下面这样改动一下即可:
babel-cli
->@babel/cli
把 TC39 提议都换成
-propoal
把那些非年度预设的 TC39 插件中的
-transform
都换成了-propoal
,这样可以更好的区分出一个提议是否为 javascript 官方的。例如:@babel/plugin-transform-function-bind
换成了@babel/plugin-proposal-function-bind
@babel/plugin-transform-class-properties
换成了@babel/plugin-proposal-class-properties
移除包名称中的年份
一些插件还带有没必要的
-es3-
或者-es2015
等字符。所以,它们做了如下改动:@babel/plugin-transform-es2015-classes
换成了@babel/plugin-transform-classes
在 CommonJS 中使用
"use strict"
和this
...
分离 React 和 Flow 之间的预设
...
解析选项
现在 Babel 的配置选项会比以前的 Babel6 更加严格。像这样的一个逗号分隔列表:
"presets": "es2015, es2016"
在以前的版本中可以运行,今后都要改成数组才可以。但是这个对 CLI 不受影响,它依然可以使用逗号分隔的字符串。插件/预设的暴露
今后所有的插件和预设向外暴露的都必须是一个函数,而不能是一个对象,这可以帮助我们进行缓存。
解析字符串配置值
...
基于路径的
only
和ignore
模式语法支持
@babel/plugin-proposal-object-rest-spread
Rest 属性:
Spread 属性:
@babel/plugin-proposal-unicode-property-regex
@babel/plugin-proposal-json-strings
@babel/plugin-transform-new-target
@babel/plugin-proposal-class-properties
@babel/plugin-proposal-optional-catch-binding
Babel CLI 命令
...
原文链接
The text was updated successfully, but these errors were encountered: