webpack 常用配置

概述

本質(zhì)上,webpack 是一個用于現(xiàn)代 JavaScript 應(yīng)用程序的 靜態(tài)模塊打包工具。當 webpack 處理應(yīng)用程序時拆宛,它會在內(nèi)部從一個或多個入口點構(gòu)建一個 依賴圖(dependency graph)确封,然后將你項目中所需的每一個模塊組合成一個或多個 bundles,它們均為靜態(tài)資源鹉动,用于展示你的內(nèi)容轧坎。

前置配置

mkdir webpack-demo
cd webpack-demo
npm init -y // create package.json
npm i --save-dev webpack webpack-cli // install webpack and webpack-cli to devDependencies
copy nul webpack-config.js // create webpack-config.js file
mkdir src // create js source folder
mkdir img // create image source folder
mkdir css // create css source folder

常用配置

入口文件


project

│  index.html
│  package-lock.json
│  package.json
│  webpack.config.js
├─css
├─img
└─src
        index.js

package.json

{
  "name": "webpack-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^5.61.0",
    "webpack-cli": "^4.9.1"
  }
}

webpack.config.js

const path = require('path')

module.exports = {
    mode: 'development',
    entry: {
        index: './src/index.js',
    },
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist')
    }
}

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
</head>
<body>
    <script src="./dist/bundle.js"></script>
</body>
</html>

index.js

console.log('hello kitty.')
document.write('hello kitty.')

在cmd中執(zhí)行 webpack命令,發(fā)現(xiàn)目錄結(jié)構(gòu)下會生成 dist目錄和bundle.js文件泽示。然后打開index.html缸血,可以看到界面和控制臺可以正常顯示 hello kitty.蜜氨。

至此,webpack的第一步配置已經(jīng)完成捎泻。

CSS樣式資源


為了在javaScript文件中importcss樣式文件飒炎,需要安裝引入style-loadercss-loader

npm i --save-dev style-loader css-loader 

webpack.config.js文件中配置css的引入規(guī)則笆豁,定義查找的文件后綴和需要使用到的plugin郎汪。

module: {
        rules: [
            {
                test: /\.css$/i,
                use: ['style-loader','css-loader'],
            }
        ]
    }

css目錄下定義樣式文件 style.css

body {
    background: greenyellow;
}

index.js文件中引入 style.css樣式

import '../css/style.css'

執(zhí)行webpack命令,觀察index.html界面的背景顏色是否發(fā)生變化渔呵。

圖片資源


圖片資源的引入與樣式引入類似怒竿,但是webpack中內(nèi)置了 Asset Modules,不需要再引入三方的plugin扩氢。

webpack.config.js文件中配置圖片資源的引入規(guī)則

 module: {
        rules: [
            {
                ... css config
            },
            {
                test: /\.(png|svg|jpg|jpeg|gif)$/i,
                type: 'asset/resource',
            }
        ]
    }

img目錄下引入一張圖片icon.png

.......
└─img
        icon.png

index.js文件中創(chuàng)建一個圖片控件并顯示耕驰。

import Img from '../img/icon.png'
const myImg = new Image();
myImg.src = Img;
document.body.appendChild(myImg)

執(zhí)行webpack命令,觀察index.html界面是否有顯示這張圖片录豺。

其它資源的引入和使用同 上面的css樣式和圖片資源朦肘,如靜態(tài)數(shù)據(jù)、字體等等双饥。

使用 source map


webpack打包源碼時媒抠,可能會很難追蹤到errorwarning在源代碼中的原始位置。為了更容易的追蹤errorwarning咏花, javaScript提供了source maps功能趴生,可以將編譯后的代碼映射回原始的源代碼中。

webpack.config.js的具體配置

module.exports = {
    .......
    devtools: 'inline-source-map',
}

具體錯誤信息可以在Console控制臺中查看昏翰。

HtmlWebpackPlugin


到目前為止苍匆,我們都是在 index.html 文件中手動引入所有資源,然而隨著應(yīng)用程序增長棚菊,并且一旦開始 在文件名中使用 hash 并輸出 多個 bundle浸踩,如果繼續(xù)手動管理 index.html 文件,就會變得困難起來统求。然而检碗,通過一些插件可以使這個過程更容易管控。

安裝html-webpack-plugin插件

npm i --save-dev html-webpack-plugin

調(diào)整webpack.config.js文件中的相關(guān)配置

const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
    ......
    plugins:[
        new HtmlWebpackPlugin({
            title: 'New Page',
        })
    ],
}

執(zhí)行webpack命令码邻,查看效果折剃。

webpack-dev-server


當前的配置,在編寫完代碼后都需要手動執(zhí)行webpack命令進行編譯像屋,然后手動刷新瀏覽器查看效果微驶。

webpack-dev-server 可以做到自動編譯代碼、自動刷新瀏覽器的效果。

安裝webpack-dev-server插件

npm i --save-dev webpack-dev-server

修改webpack.config.js配置文件 因苹,告訴devServer苟耻,該從什么位置查找文件

module.exports = {
    .......
     devServer:{
        static: './dist',
        hot: true,  //自動更新
    },
}

package.json腳本上添加直接運行 dev server的script

 "scripts": {
    "build-dev": "webpack serve --open"
  },

運行命令并自動打開瀏覽器頁面

npm run build-dev

其它


待補充。扶檐。凶杖。。款筑。智蝠。

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市奈梳,隨后出現(xiàn)的幾起案子杈湾,更是在濱河造成了極大的恐慌,老刑警劉巖攘须,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漆撞,死亡現(xiàn)場離奇詭異,居然都是意外死亡于宙,警方通過查閱死者的電腦和手機浮驳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捞魁,“玉大人至会,你說我怎么就攤上這事∑准螅” “怎么了奉件?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長昆著。 經(jīng)常有香客問我县貌,道長,這世上最難降的妖魔是什么宣吱? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任窃这,我火速辦了婚禮瞳别,結(jié)果婚禮上征候,老公的妹妹穿的比我還像新娘。我一直安慰自己祟敛,他們只是感情好疤坝,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著馆铁,像睡著了一般跑揉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天历谍,我揣著相機與錄音现拒,去河邊找鬼。 笑死望侈,一個胖子當著我的面吹牛印蔬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脱衙,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼侥猬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捐韩?” 一聲冷哼從身側(cè)響起退唠,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荤胁,沒想到半個月后瞧预,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡寨蹋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年松蒜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片已旧。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡秸苗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出运褪,到底是詐尸還是另有隱情惊楼,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布秸讹,位于F島的核電站檀咙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏璃诀。R本人自食惡果不足惜弧可,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劣欢。 院中可真熱鬧棕诵,春花似錦、人聲如沸凿将。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牧抵。三九已至笛匙,卻和暖如春侨把,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背妹孙。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工秋柄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蠢正。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓华匾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親机隙。 傳聞我的和親對象是個殘疾皇子蜘拉,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容