We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Babel是一个广泛使用的转码器,可将任意任意版本语法和API转到当前环境支持的版本。
将配置文件.babelrc,放在项目根目录。
.babelrc
{ "presets": [ [ "@babel/preset-env", { "useBuiltIns": "usage" } ], ["@babel/preset-react"] ], "plugins": [ [ "import", { "libraryName": "antd-mobile", "style": "css" } ], "@babel/plugin-syntax-dynamic-import" ] }
Babel默认只转换新的JS句法(syntax),而不转换新的API,比如Set、Maps等全局对象,以及一些定义在全局对象上的方法,比如Object.assign、Array.from等,具体可以查看这个列表,所以此时就需要包含core-js、regenerator、helpers方法库的@babel/polyfill或@babel/runtime。
Babel编译器,包括了几乎所有核心API,将JS代码抽象成AST,再分析做对应的转换处理。
Babel预设,设定转码规则,包含某一部分plugins,从下往上执行。
{ "presets": [ [ "@babel/preset-env", { "targets": { // 目标环境,建议去除,采用在根目录设置.browserslistrc "browsers": "> 5%" }, "modules": false, // 设置ES6 模块转译的模块格式 默认是 commonjs "useBuiltIns": "usage", // @babel/polyfill加载方式, "debug": true, // 调试模式,开启会输出目标环境、transforms、plugins和polyfills "include": [], // 总是启用哪些 plugins "exclude": [] // 强制不启用哪些 plugins } ] ] }
按需是根据目标环境,polyfills影响代码体积
对ES一些提案的支持,向下兼容,比如stage-0包含stage-[1-3]。在Babel7已经废弃,换成proposal-x。
Babel插件,从上往下执行,并且在presets之前运行。
包含core-js、regenerator、helpers,用来转换新的属性和方法。
{ "plugins": [ [ "@babel/plugin-transform-runtime", { "corejs": false, "helpers": true, "regenerator": true, "useESModules": false } ] ] }
注意:
@babel/plugin-transform-runtime
babel-runtime
[1,2,3].includes
Array.prototype.includes
功能和@babel/runtime类似,在@babel/preset-env配置useBuiltIns开启,详细可见其说明。
本文发布于薄荷前端周刊,欢迎Watch & Star ★,转载请注明出处。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Babel是一个广泛使用的转码器,可将任意任意版本语法和API转到当前环境支持的版本。
使用
将配置文件
.babelrc
,放在项目根目录。概念介绍
Babel默认只转换新的JS句法(syntax),而不转换新的API,比如Set、Maps等全局对象,以及一些定义在全局对象上的方法,比如Object.assign、Array.from等,具体可以查看这个列表,所以此时就需要包含core-js、regenerator、helpers方法库的@babel/polyfill或@babel/runtime。
@babel/core
Babel编译器,包括了几乎所有核心API,将JS代码抽象成AST,再分析做对应的转换处理。
presets
Babel预设,设定转码规则,包含某一部分plugins,从下往上执行。
@babel/preset-env
useBuiltIns分析
按需是根据目标环境,polyfills影响代码体积
stage-X
对ES一些提案的支持,向下兼容,比如stage-0包含stage-[1-3]。在Babel7已经废弃,换成proposal-x。
plugins
Babel插件,从上往下执行,并且在presets之前运行。
@babel/runtime
包含core-js、regenerator、helpers,用来转换新的属性和方法。
注意:
@babel/plugin-transform-runtime
来做自动化引用。babel-runtime
的引用不是全局生效的,因此实例化的对象方法则不能被 polyfill,比如[1,2,3].includes
这样依赖于全局Array.prototype.includes
的调用依然无法使用,比较适用于库。@babel/polyfill
功能和@babel/runtime类似,在@babel/preset-env配置useBuiltIns开启,详细可见其说明。
注意:
参考文档
广而告之
本文发布于薄荷前端周刊,欢迎Watch & Star ★,转载请注明出处。
欢迎讨论,点个赞再走吧 。◕‿◕。 ~
The text was updated successfully, but these errors were encountered: