淺析webpack使用方法

這裏寫圖片描述
webpack是一個網頁模塊打包工具,能夠將全部代碼、圖片、樣式打包在一塊兒,除此以外還有許多實用的功能。最近看了一個慕課學習了一下webpack的使用,在這裏作一下總結。css

本文不會涉及太多深刻的知識,只會講主要的幾個知識點。html

安裝


npm init myapp
cd myapp
npm i webpack

此時項目內已經有了node_modulesepackage.jsonvue

使用

這裏將使用一個Vue和webpack結合的項目來說解。
新建文件夾以下這裏寫圖片描述
webpack的主要使用方法我都在註釋裏寫的很清楚了。
webpack.config.jsnode

const path = require('path')  //必須先導入這個包,用於管理路徑
const webpack = require('webpack')
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const HTMLPlugin = require('html-webpack-plugin');

const isDev = process.env.NODE_ENV === 'development'

const config = {
  target: 'web',
  entry: path.join(__dirname, 'src/index.js'),    //配置入口文件路徑,這裏的__dirname爲系統變量,表示項目根目錄
  output: {   //配置build文件輸出路徑
    filename: 'bundle.js',
    path: path.join(__dirname, 'dist')
  },
  module: {
    rules: [    //添加各個類型的loader,是一個數組
      {
        test: /\.vue$/,   //採用正則來匹配文件類型
        loader: require.resolve('vue-loader'),  //選擇loader,通常名字都是filetype-loader,須要先用npm i 安裝對應的loader
        options: {
        }
      }, {
        test: /\.css$/,
        use: [    //使用多個loader時使用use語句,按照從後往前的解析順序寫,這裏是先使用css-loader,再使用style-loader
          'style-loader',
          'css-loader'
        ]
      }, {
        test: /\.(gif|jpg|jpeg|png|svg)$/,
        use: [
          {
            loader: 'url-loader',
            options: {    //使用options往loader裏面傳額外的參數
              limit: 1024,
              name: '[name]-aaa.[ext]'
            }
          }
        ]
      }, {
        test: /\.styl$/,
        use: [
          'style-loader',
          'css-loader',
          'stylus-loader'
        ]
      }
    ]
  },
  plugins: [    //在這裏添加各類插件,這裏的插件都須要先在前面require
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: isDev ? '"development"' : '"production"'
      }
    }),
    new HTMLPlugin(),
    new VueLoaderPlugin()
  ]
}

if (isDev) {    //判斷是不是在開發環境下進行配置
  config.devtool = '#cheap-module-eval-source-map'  //調試器,否則按F12只有一個打包後的代碼不利於調試

  config.devServer = {
    port: '8000',   //設置端口
    host: '0.0.0.0',      //設置ip,推薦設置0.0.0.0而不是localhost,這樣的話就能夠在網頁上既能夠用localhost登陸也能夠在內網手機輸入ip登入
    overlay: {
      errors: true,   //有錯誤時是否將錯誤在網頁顯示
    },
    open: true,  //編譯完成自動用瀏覽器打開
    historyApiFallback: true, //將一些錯誤地址或者沒有定義的地址跳轉,相似於Not Found 404
    // hot: true //打開局部熱加載,由於後面使用了實時更新的功能,因此關閉熱加載
  }
  config.plugins.push(
    new webpack.HotModuleReplacementPlugin(),   //啓動熱加載功能須要添加的插件
    new webpack.NoEmitOnErrorsPlugin()  //減小一些沒必要要的調試信息展現問題
  )
}
module.exports = config;

對應的須要在package.json中的scripts裏面添加如下代碼來指定webpack

"scripts": {
   ...
    "build": "cross-env NODE_ENV=production webpack --config webpack.config.js",
    "dev": "cross-env NODE_ENV=development· webpack-dev-server --config webpack.config.js" },
相關文章
相關標籤/搜索