rollup 中使用 @babel/polyfill

背景:
使用rollup打包器,在入口文件中使用了es6 new Set(), 結果在ie11一下版本 報錯
在這裏插入圖片描述

但是 rollup 中 我現在已經使用了 rollup-plugin-node插件,在ie中仍然報錯。

後來查到Babel默認只轉換新的JavaScript句法(syntax),而不轉換新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局對象,以及一些定義在全局對象上的方法(比如Object.assign)都不會轉碼。

需要使用babel -polyfill 解決這個問題,爲當前環境提供一個墊片。

重點來了

我們首先 安裝 babel/polyfill

  • 在終端執行 npm install --save @babel/polyfill (注意不能是開發版本的依賴)
  • 在項目入口文件 引入,require或者import都可以,我用的es6的模塊,所以我用的後者 。
    注意一定要在入口文件的最頂部使用
import '@babel/polyfill'

這個是安裝完babel相關依賴包的位置在這裏插入圖片描述

  • 接下來是進行配置,在rollup中我們要在rollup.config.js中進行配置(webpack中是在.babelrl中配置)
babel({
      exclude: 'node_modules/**',
      presets: [
        [
          '@babel/env',
          {
            modules: 'false',
            targets: {
              browsers: '> 1%, IE 11, not op_mini all, not dead',
              node: 8
            },
            useBuiltIns: 'usage'
          }
        ]
      ]
    })

接下來 再進行打包,ie預覽,就沒有報錯了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章