ES6和Babel

參考資料:node

  1. 快樂動起來呀 的 ES6和Babel你不知道的事兒'
  2. babel官網

babel-loader babel-core

只配置babel-loader babel-core是沒法知道用什麼規則來打包的,須要安裝Babel Presets 新版 裝npm install -save-dev babel-loader@8.0.0-beta.0 @babel/corereact

老版 裝npm install –save-dev babel-loader babel-corees6


Babel Presets有不少的版本

es2015npm

es2016json

es2017瀏覽器

新版 envbabel

babel-preset-reactapp

babel-preset-stage 0-3函數

若是上面裝的新版的就用npm install @babel/preset-env –save-devui

若是是普通版的就用npm install babel-preset-env –save-dev

裝好後要給loader指定presets參數

還能夠設置目標,比喻哪些瀏覽器能夠轉換 targets

targets.browsers

targets.browsers: "last 2 versions" 大於版本2的主流瀏覽器

targets.browsers: "> 1%" 大於全球1%的瀏覽器

browserslist 具體能夠參考這個模塊

can i use

var path = require('path');
module.exports = {
    entry: {
      app: "./app.js"
    },
    output: {
      filename: "[name].[hash:8].js"
    },
    module: {
      rules: [
        {
          test: /\.js$/,
          exclude: '/node_modules/',
          // exclude: path.resolve(__dirname, 'node_modules'), //編譯時,不須要編譯哪些文件
          //include: path.resolve(__dirname, 'src'),//在config中查看 編譯時,須要包含哪些文件
          use: {
            loader: "babel-loader",
            options: {
              presets: [
                ['@babel/preset-env', {
                  targets: {
                    browsers: ['> 1%', 'last 2 versions']
                  }
                }]//給loader指定presets參數
              ]
            }
          },
        }
      ]
    }
  };
複製代碼

Babel Polyfill, Babel Runtime Transform

以上的只是轉換了es6的語法,對於一些方法和函數是沒有轉換的,因此要用到Babel Polyfill, Babel Runtime Transform 如:Generator、Set、Map、Array.from、Array.prototype.includes等

npm install --save-dev babel-polyfill

在寫es6的頁面中引用 import "babel-polyfill"

npm install @babel/plugin-tra9)nsform-runtime @babel/runtime -–save-dev

.babelrc 文件

{
  "presets": [
    ["@babel/preset-env", {
      "targets": {
        "browsers": ["> 1%", "last 2 versions"]
      }
    }]
  ],
  "plugins": [
    "@babel/transform-runtime"
  ]
}

複製代碼
相關文章
相關標籤/搜索