关于前端:babel配置问题

作用

babel的作用是把jsx,ts,es678等编译成能够被浏览器应用的es5.

配置文件.babelrc 默认不会进行编译。

preset是plugin的数组。

@babel/preset-env 转换es678 到es5
@babel/preser-react 转换react
@babel/preset-typescript
@babel/preset-flow

因为并不是要适配所有的浏览器,所以很多的plugin并不需要,所以preset是能够配置的。

polyfill的援用

要使我的项目兼容浏览器,不仅是语法的兼容,还有新的成员,Set,Map,Symbel,新的API等。

polyfill有两种配置办法,一种间接在文件中import @babel/polyfill,配置办法:useBuiltIns: entry
另一种是在对象上增加。useBuiltIns: usage

。。。

@babel/cli 命令行工具
@babel/core 把es678 转换成es5

配置文件

{
    "presets": [
        ["@babel/preset-env", {
            "modules": false
        }], 
        "@babel/preset-typescript", 
        "@babel/react"
    ],
    "plugins": [
        "@babel/plugin-proposal-function-bind", 
        "@babel/plugin-proposal-object-rest-spread", 
        "@babel/transform-arrow-functions",
        "@babel/plugin-transform-runtime",
        "@babel/plugin-syntax-optional-chaining",
        ["@babel/plugin-proposal-decorators", {
            "legacy": true
        }],
        ["@babel/plugin-proposal-class-properties", {"loose": false}],
        "@babel/plugin-syntax-dynamic-import",
        ["babel-plugin-transform-class-properties", { "spec": true }]
    ],
    "env": {
        "development": {
            "plugins": ["react-hot-loader/babel"]
        }
    }
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理