babel-loader: transpile modern j

2023-10-23  本文已影响0人  Time_Notes

写完代码发现自己的js代码不能运行在IE10或者IE11上,然后尝试着引入各种polyfill

babel的出现提供了便利,将高版本的ES6甚至ES7转为ES5,兼容低版本浏览器

steps:

1、首先安装babel所需要的依赖

npm i -D babel-loader @babel/core @babel/preset-env @babel/plugin-transform-runtime

npm i -S @babel/runtime

2、然后在config添加loader对js进行处理:

{

    //省略其他配置

    rules: [{

        test: /\.js/,

        use: {

            loader: 'babel-loader'

        }

    }]

}

3、把babel的配置提取到根目录,新建一个.babelrc文件:

{

    "presets": [

        "@babel/preset-env"

    ],

    "plugins": [

        "@babel/plugin-transform-runtime"

    ]

}

在index.js中尝试写一些es6的语法,看到代码会被转译成es5,代码在demo4中。


由于babel-loader的转译速度很慢,后面加入了时间插件后可以看到每个loader的耗时,babel-loader最耗时间;因此要尽可能少的使用babel来转译文件,对config进行改进:

{

    //省略其他配置

    rules: [{

        test: /\.js$/,

        use: {

            loader: 'babel-loader'

        },

        // exclude: /node_modules/,

        include: [path.resolve(__dirname, 'src')]

    }]

}

正则上使用$来进行精确匹配,通过exclude排除node_modules中的文件,include只匹配src中的文件;可以看出include的范围比exclude缩小精确,因此也是推荐使用include。

上一篇 下一篇

猜你喜欢

热点阅读