webpack打包js之babel全局垫片和局部垫片

全局垫片polyfill,

这个库将会模拟一个完全的 ES2015+ 的环境。

这意味着你可以使用 新的内置语法 比如 promise 或者 WeakMap, 静态方法比如Array.from 或 Object.assign, 实例方法 比如 Array.prototype.includes 和 generator 函数。

使用的时候按照webpack官网去下载相应的babel包

npm install --save-dev bable-loader @babel/core @babel/preset-env;

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
{
    test: /\.js$/,
    exclude: /node_modules/, 
    use: {
      loader: 'babel-loader',
      options: {
        presets: [["@babel/preset-env"],{
          "useBuiltIns":"usage",
          "targets":{   //表示的是当前js在浏览器的版本
            "chrome":"67",
            "ie":"9"
           }
        }]
      }
    }
}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

上面的基础的配置方法

polyfill 用起来很方便,但是你应该和 @babel/preset-env 以及 useBuiltIns 的option 一起用。如果不这样做的话需要手动引入需要的每个polyfill   也就是在每个js文件的第一行就去引入polyfill (import @babel/polyfill);

babel只会转换E6语法,而不会转换新的api,让新的api生效的方法是使用传统的polyfill,为此需要引入这个模块

 

局部垫片

npm install --save-dev babel-plugin-transform-runtime

添加配置文件 .babelrc  写入以下配置内容

{
            "presets":["@babel/preset-env"],
             "plugins": [
              [
                "@babel/plugin-transform-runtime",
                {
                  "absoluteRuntime": false,
                  "corejs": 2,
                  "helpers": true,
                  "regenerator": true,
                  "useESModules": false
                }
              ]
            ] 
          }

这段配置可以写入到.babelrc和webpack的配置文件中 都可以生效,但是加上这段代码了之后   打包的时候会出现报错  说是还有一个依赖包没有下载回来

ERROR in ./src/js/index.js 3:0-80
Module not found: Error: Can't resolve '@babel/runtime-corejs2/helpers/asyncToGenerator' in '/Users/zhangweien/myProject/zhaopin/src/js'

那么需要继续去下载依赖包   npm install --save @babel/runtime-corejs2  下载成功之后就可以继续去打包了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值