【W(wǎng)ebpack】2.四個(gè)核心概念及使用

webpack 中的四個(gè)核心概念 (Demo2 Source

  • Entry 入口
  • Output 輸出
  • Loaders
  • Plugins 插件

??webpack 中默認(rèn)的配置文件名稱是 webpack.config.js病梢,因此我們需要在項(xiàng)目中創(chuàng)建如下文件結(jié)構(gòu):

.        
├── index.html            // 顯示的頁(yè)面
├── main.js              // webpack 入口 
├── webpack.config.js   //  webpack 中默認(rèn)的配置文件
└── bundle.js          //  通過 webpack 命令生成的文件,無需創(chuàng)建

entry 入口

??入口起點(diǎn)(entry point)指示 webpack 應(yīng)該使用哪個(gè)模塊嬉愧,來作為構(gòu)建其內(nèi)部依賴圖的開始。進(jìn)入入口起點(diǎn)后。 webpack 會(huì)找出有哪些模塊和庫(kù)是入口起點(diǎn)(直接和間接)依賴的檬寂。

??可以在 webpack.config.js 中 配置 entry 屬性讨跟,來指定一個(gè)入口或多個(gè)起點(diǎn)入口,代碼如下:

    moudle.exports = {
        entry: './path/file.js'
    };

output 輸出

?? output 屬性告訴 webpack 在哪里輸出它所創(chuàng)建的 bundles易猫,以及如何命名這些文件耻煤。你可以通過在配置指定一個(gè) output 字段,來配置這些過程:

    const path = require('path');
    
    moudle.exports = {
        entry: './path/file.js',
        output:{
            path: path.resolve(__dirname,'dist'),
            filename: 'my-webpack.bundle.js'
        }
    }

??其中 output.path 屬性用于指定生成文件的路徑准颓,output.filename 用于指定生成文件的名稱哈蝇。

Loaders

?? Loaderswebpack 能夠去處理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)。loader 可以將所有類型的文件轉(zhuǎn)換為 webpack 能夠處理的有效模塊攘已,然后可以利用 webpack 的打包能力炮赦,對(duì)它們進(jìn)行處理。

??本質(zhì)上样勃,webpack loader 將所有類型的文件吠勘,轉(zhuǎn)換為應(yīng)用程序的依賴圖可以直接引用模塊性芬。在更高層面上,在 webpack 的配置中 loader 有兩個(gè)目標(biāo):

  1. 識(shí)別應(yīng)該被對(duì)應(yīng)的 loader 進(jìn)行轉(zhuǎn)換的那些文件(使用 test 屬性)
  2. 轉(zhuǎn)換這些文件剧防,從而使其能夠被添加到依賴圖中(并且最終添加到 bundle 中)(use 屬性)

??在開始下面的代碼之前批旺,我們需要安裝 style-loadercss-loader

    $ npm install --save-dev style-loader css-loader

并在項(xiàng)目中創(chuàng)建 style.css 樣式文件:

    h1{ color: red; }

??然后在 webpack.config.js 中輸入以下代碼:

    const path = require('path');
    
    module.export = {
        entry: './main.js',
        output: {
            path: path.resolve(__dirname,'dist'),
            filename: 'bundle.js'
        },
        module: {
            rules:[
                { 
                    test: /\.css$/, 
                    use: [
                        { loader: 'style-loader' },
                        { loader: 'css-loader' }
                    ]
                }
            ]
        }
    };

Plugins 插件

?? Loaders 被用于轉(zhuǎn)換某些類型的模塊,而插件則可以用于執(zhí)行范圍更廣的任務(wù)诵姜。插件的范圍包括汽煮,從打包優(yōu)化和壓縮,一直到重新定義環(huán)境中的變量棚唆。

??想要使用一個(gè)插件暇赤,需要 require() 它,然后把它添加到 Plugins 數(shù)組中宵凌,多數(shù)插件可以通過選項(xiàng)自定義鞋囊。也可以在一個(gè)配置文件中因?yàn)椴煌康亩啻问褂猛粋€(gè)插件,這時(shí)需要通過使用 new 操作符來創(chuàng)建它的實(shí)例瞎惫。

??在開始下面的代碼之前溜腐,我們需要安裝 html-webpack-plugin 插件:

    $ npm install html-webpack-plugin --save-dev

它可以簡(jiǎn)化HTML文件的創(chuàng)建,為您的webpack包提供服務(wù)瓜喇。

??然后在 webpack.config.js 中輸入以下代碼:

    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const path = require('path');
    
    const config = {
        entry: './main.js',
        output: {
            path: path.resolve(__dirname,'dist'),
            filename: 'bundle.js'
        },
        module: {
            rules:[
                { 
                    test: /\.css$/, 
                    use: [
                        { loader: 'style-loader' },
                        { loader: 'css-loader' }
                    ]
                }
            ]
        },
        plugins: [
            new HtmlWebpackPlugin({ template: './index.html' })
        ]
    };
    
    module.exports = config;

運(yùn)行與配置

?? 最后我們可以直接通過 webpack 命令編譯打包,如果想要在其命令后加入?yún)?shù)挺益,可以通過配置 package.json 文件中的 scripts 屬性:

    {
        scripts: {
            "build": "webpack --config webpack.config.js --progress --display-modules"
        }
    }

當(dāng)然如果你想要更改默認(rèn)的配置文件名稱,可以將 --config 后面的 webpack.config.js 配置文件名改為你自定義的名稱乘寒。

??通過以下命令執(zhí)行:

    $ npm run build
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市烂翰,隨后出現(xiàn)的幾起案子甘耿,更是在濱河造成了極大的恐慌竿滨,老刑警劉巖姐呐,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件头谜,死亡現(xiàn)場(chǎng)離奇詭異柱告,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)葵袭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門坡锡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹉勒,“玉大人禽额,你說我怎么就攤上這事脯倒∞嗲猓” “怎么了讯沈?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)挤茄。 經(jīng)常有香客問我穷劈,道長(zhǎng)歇终,這世上最難降的妖魔是什么逼龟? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任奕短,我火速辦了婚禮翎碑,結(jié)果婚禮上日杈,老公的妹妹穿的比我還像新娘。我一直安慰自己翰蠢,他們只是感情好梁沧,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布廷支。 她就那樣靜靜地躺著恋拍,像睡著了一般施敢。 火紅的嫁衣襯著肌膚如雪僵娃。 梳的紋絲不亂的頭發(fā)上腋妙,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天匙睹,我揣著相機(jī)與錄音痕檬,去河邊找鬼梦谜。 笑死改淑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蔼啦。 我是一名探鬼主播捏肢,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼辩棒!你這毒婦竟也來了一睁?” 一聲冷哼從身側(cè)響起者吁,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎育八,沒想到半個(gè)月后单鹿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡镣奋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年余赢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妻柒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片举塔。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡计盒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拔第,到底是詐尸還是另有隱情培廓,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站踩窖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏啥供。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一罢防、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸绪励。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至晤愧,卻和暖如春大莫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背官份。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工只厘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人舅巷。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓羔味,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親钠右。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赋元,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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

  • 版權(quán)聲明:本文為博主原創(chuàng)文章狠毯,未經(jīng)博主允許不得轉(zhuǎn)載坪仇。 webpack介紹和使用 一、webpack介紹 1垃你、由來 ...
    it筱竹閱讀 11,059評(píng)論 0 21
  • GitChat技術(shù)雜談 前言 本文較長(zhǎng),為了節(jié)省你的閱讀時(shí)間,在文前列寫作思路如下: 什么是 webpack惜颇,它要...
    蕭玄辭閱讀 12,679評(píng)論 7 110
  • webpack 介紹 webpack 是什么 為什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert閱讀 6,458評(píng)論 2 71
  • 目錄第1章 webpack簡(jiǎn)介 11.1 webpack是什么皆刺? 11.2 官網(wǎng)地址 21.3 為什么使用 web...
    lemonzoey閱讀 1,731評(píng)論 0 1
  • 行于世,當(dāng)識(shí)人凌摄,然識(shí)人不必探盡羡蛾,探盡則多怨;當(dāng)知人锨亏,然知人不必言盡痴怨,言盡則無友;當(dāng)責(zé)人器予,然責(zé)人不必苛盡浪藻,苛盡則眾遠(yuǎn)...
    Applestar英語(yǔ)老師閱讀 109評(píng)論 0 0