Webpack V4安裝使用與常用配置總結

webpack

Webpack 是一個前端資源加載/打包工具。它將根據模塊的依賴關係進行靜態分析,然後將這些模塊按照指定的規則生成對應的靜態資源。
這裏寫圖片描述

Webpack可以將多種靜態資源js、css、less轉換成一個靜態文件,減少了頁面的請求。

Webpack 的安裝

webpack在打包過程中會使用node內置的一些模塊。
在安裝Webpack前,你本地環境需要支持 node.js
npm安裝命令:

// 全局安裝 
npm install -g webpack
// 安裝到你的項目目錄
npm install --save-dev webpack
// 或使用淘寶鏡像安裝
cnpm install -g webpack

webpack官方不推薦使用全局安裝,全局安裝會鎖定到特定版本的WebPACK,並可能在使用不同版本的項目中失敗。

這裏僅僅用於試驗,使用cnpm全局安裝,安裝版本是v4.12.1
安裝完後運行發現提示如下:
這裏寫圖片描述

webpack v4或更高版本,則需要額外安裝CLI

webpack-cliwebpack-command的差別不大,前者具有webpack所有功能,後者是輕量級的封裝好的CLI,這裏安裝webpack-cli

如果是全局安裝的話,webpack-cli也是需要全局安裝的,命令如下:

// 全局安裝 
npm install -g webpack-cli
// 安裝到你的項目目錄
npm install --save-dev webpack-cli

結果如下:
這裏寫圖片描述

輸入webpack -v可以查看webpack版本。

這裏寫圖片描述

Webpack 的使用

輸出webpack-cli -h 可以查看可設置的參數與配置

Usage: webpack-cli [options]
       webpack-cli [options] --entry <entry> --output <output>
       webpack-cli [options] <entries...> --output <output>
       webpack-cli <command> [options]

配置選項:

參數 說明 輸入類型 缺省
--config 配置文件的路徑 String webpack.config.js或webpackfile.js
--config-register, -r 在加載webpack配置之前預加載一個或多個模塊 Array
--config-name 要使用的配置的名稱 String
--env 當它是一個函數時,環境傳遞給配置 String
--mode 使用模式,無論是“開發”還是“生產” String

輸出選項:

參數 說明 輸入類型 缺省
--output-chunk-filename 輸出其他塊的文件名 String filename with [id] instead of [name] or [id] prefixed
--output-filename 輸出爲打包文件的文件名 String [name].js
--output-jsonp-function 用於塊加載的JSONP函數的名稱 String webpackJsonp
--output-library 將入口點的導出顯示爲庫 String
--output-library-target 用於將入口點的導出作爲庫公開的類型 String var
--output-path 輸出到編譯的目錄 String 當前目錄
--output-pathinfo 包含對每個依賴項的請求的註釋 Boolean false
--output-public-path 輸出公共路徑 String /
--output-source-map-filename 輸出源映射的文件名 String [name].map or [outputFilename].map
--build-delimiter 輸出後顯示自定義文本 String Default string is null. You could provide a string such as === Build done ===

在不建立配置文件的情況下,使用webpack-cli也可以進行簡單的打包

在測試文件夾webpack-demo建立如下目錄:

  webpack-demo
  |- index.html
  |- /src
    |- index.js
    |- greet.js
  |- /dist

src目錄下的index.js文件爲webpack編譯入口文件,greet.js爲封裝的簡易模塊。

// greet,js

module.exports = function() {
  var greeter = document.createElement('div');
  greeter.innerText = "Hello webpack!";
  return greeter;
};
// index.js

const greeter = require('./greet.js');

document.querySelector("#app").appendChild(greeter());

index.html文件爲網頁訪問的入口文件。

<!-- index.html -->

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Webpack-demo-test</title>
  </head>
  <body>
    <div id='app'>
    </div>
    <script src="./dist/bundle.js"></script>
  </body>
</html>

dist目錄爲webpack編譯輸出文件目錄。

webpack-demo目錄下運行

webpack-cli --entry ./src/index.js --output ./dist/bundle.js

結果如下:
這裏寫圖片描述

編譯成功後dist目錄便會生成bundle.js文件,此時用瀏覽器打開index.html可以看到在文檔上寫入了Hello webpack!

通過配置文件來使用Webpack

webpack官網上指明:從版本4開始,webpack不需要任何配置,但大多數項目都需要更復雜的設置,這就是webpack支持配置文件的原因。這比在終端中手動輸入許多命令更有效率。

在主目錄創建webpacl.config.js文件:

// webpack.config.js

const path = require('path'); // 使用node.js中的path模塊

module.exports = {
  mode: "development",     // 設置模式爲development,("production" | "development" | "none")
  entry: './src/index.js',   // 入口文件
  output: {
    filename: 'bundle.js',   // 打包輸出文件名
    path: path.resolve(__dirname, 'dist')    // 打包輸出目錄
  }
};

然後在webpack-demo目錄下運行

webpack-cli --config webpack.config.js

也可以成功編譯。

設置package.json快速使用webpack

// 使用npm init快速創建package.json文件

npm init -y

更改package.json文件,隨着private:true,以及刪除main條目。這是爲了防止意外發布代碼。

{
  "name": "webpack-demo",
  "version": "1.0.0",
  "description": "",
  "private": true,
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack-cli --config webpack.config.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

配置完成後只需要在命令行輸入npm start ,就可以按webpack.config.js中設置的配置進行打包了。

參考文獻:webpck官方文檔

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