學習webpack4 - ES6語法轉化

學習webpack4 - 基礎配置
學習webpack4 - HTML處理
學習webpack4 - 樣式處理
學習webpack4 - ES6語法轉化
學習webpack4 - 第三方庫的使用
學習webpack4 - 抽離公共代碼css

...持續中html

=======================================================node

ES6語法轉化

注意:開始以前如下內容以前,須要配置一些webpack的基礎配置,傳送門:學習webpack4.x - 基礎配置webpack

當前目錄結構爲:web

clipboard.png

  • index.js 文件內容:
require('./index.css');
require('./index.scss');
  • webpack.config.js文件內容:
let path = require('path');
let HtmlWebpackPlugin = require('html-webpack-plugin');
let MiniCssExtractPlugin = require('mini-css-extract-plugin'); //抽離CSS
let OptimizeCssPlugin = require('optimize-css-assets-webpack-plugin'); //優化項,好比壓縮css等
let UglifyJsPlugin = require('uglifyjs-webpack-plugin'); //壓縮js

module.exports = {
  // mode: 'development',

  //優化項配置
  optimization: {
    minimizer: [
      new OptimizeCssPlugin(),
      new UglifyJsPlugin({
        cache: true, //緩存
        parallel: true, //併發打包
        sourceMap: true //源碼映射便於調試
      })
    ]
  },

  //開一個本地服務
  devServer: {
    port: 3000, //端口號
    progress: true, //進度條
    contentBase: './dist', //指定目錄運行服務
    open: true //自動打開瀏覽器
  },
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },

  // 模塊配置
  module: {
    rules: [{
      test: /\.(css|scss)$/,
      use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader', 'sass-loader']
    }]
  },

  //插件配置
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html', //原始文件
      filename: 'index.html', //打包後的文件名稱
      hash: true, //hash
    }),
    new MiniCssExtractPlugin({
      filename: 'main.css' //抽離出的css文件名稱
    })
  ]
}
  • package.json文件內容:
{
  "name": "webpack",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "scripts": {
    "dev": "webpack --mode development && webpack-dev-server",
    "build": "webpack --mode production"
  },
  "devDependencies": {
    "autoprefixer": "^9.4.7",
    "css-loader": "^2.1.0",
    "html-webpack-plugin": "^3.2.0",
    "less": "^3.9.0",
    "less-loader": "^4.1.0",
    "mini-css-extract-plugin": "^0.5.0",
    "node-sass": "^4.11.0",
    "optimize-css-assets-webpack-plugin": "^5.0.1",
    "postcss-loader": "^3.0.0",
    "sass-loader": "^7.1.0",
    "style-loader": "^0.23.1",
    "uglifyjs-webpack-plugin": "^2.1.1",
    "webpack": "^4.29.4",
    "webpack-cli": "^3.2.3",
    "webpack-dev-server": "^3.1.14",
    "webpack-html-plugin": "^0.1.1"
  }
}

將ES6轉化爲ES5

step1: 打開src/index.js,輸入:npm

const fn = () => {
  console.log('丸子');
}

fn ();

step2: 配置webpack.config.js文件:json

將ES6轉成ES5,須要babel-loader,配置規則爲:segmentfault

module.exports = {
  //...
  module: {
    //...
    {
      test: /\.js$/,
      use: {
        loader: 'babel-loader',
        options: {
          presets: ['@babel/preset-env'] // 根據目標瀏覽器自動轉換爲相應es5代碼
        }
      }
    }
  }
};

step3: 安裝插件:瀏覽器

yarn add babel-loader @babel/core @babel/preset-env -D

嘗試運行: npm run dev, 成功!以下圖:緩存

clipboard.png

相關文章
相關標籤/搜索