17 webpack中babel的配置

在webpack中,默认只能处理一部分ES6的新语法,一些更高级的ES6语法或者ES7语法,

webpack是处理不了的;这时候,就需要借助于第三方的loader,来帮助webpack处理这些高级的语法,

当第三方loader把高级语法转为低级的语法之后,会把结果交给webpack去打包到bundle.js中。

通过Babel,可以帮我们将高级的语法转换为低级的语法

1.webpack中,可以运行如下两套 命令,安装两套包,去安装Babel相关的loader功能:

1.1第一套:cnpm i babel-core babel-loader babel-plugin-transform-runtime -D

1.2第二套:cnpm i babel-preset-env babel-preset-stage-0 -D

2.打开webpack的配置文件,在module节点下的rules数组中,添加一个 新的匹配规则:

2.1{test:/.js$/,use:'babel-loader',exclude:/node_modules/}

2.2注意:在配置babel的loader规则的时候,必须把node_modules目录,通过exclude选项排除掉:

原因有两个:

2.2.1如果不排除node_modules,则Babel会把node_modules中所有的第三方JS文件,

都打包编译,这样,会非常消耗CPU,同时,打包速度非常慢;

2.2.2哪怕,最终,Babel把所有node_modules中的JS转换完毕了,但是,项目也无法正常运行!

3.在项目的根目录中,新建一个叫做 .babelrc 的Babel配置文件,这个配置文件,属于JSON格式,

所以,在写 .babelrc配置的时候,必须符合JSON语法规范:不能写注释,字符串必须使用双引号

3.1在.babelrc写如下配置:大家可以把preset翻译成【语法】的意思

        // {
        //     "presets":["env","stage-0"],
        //     "plugins":["transform-runtime"]
        // }

4.了解:目前,我们安装的 babel-preset-env,是比较新的ES语法,之前,我们安装的是

babel-preset-es2015,现在,出现了一个更新的 语法插件,叫做babel-preset-env,

它包含了 所有的和es***相关的语法