1. 程式人生 > 實用技巧 >淺析webpack使用方法

淺析webpack使用方法


webpack是一個網頁模組打包工具,可以將所有程式碼、圖片、樣式打包在一起,除此之外還有許多實用的功能。最近看了一個慕課學習了一下webpack的使用,在這裡做一下總結。

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

安裝


npm init myapp
cd myapp
npm i webpack

此時專案內已經有了node_modulesepackage.json

使用

這裡將使用一個Vue和webpack結合的專案來講解。

新建資料夾如下
webpack的主要使用方法我都在註釋裡寫的很清楚了。
webpack.config.js

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裡面新增以下程式碼來指定

  "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"
  },