webpack

首先 · 小小的說一下。

~~~~~~~~之前辖所,用commonJS惰说,ES6在做模塊化等。用起來略繁瑣缘回。下載各類插件吆视,手動對各類代碼分類,不斷編譯酥宴。
~~~~~~~~吶啦吧,現(xiàn)在就使用webpack打包一下,現(xiàn)在流行的有webpack拙寡,gulp授滓,主要學(xué)習(xí)webpack。

webpack:打包工具,又成構(gòu)建工具褒墨。

作用:對JS、css擎宝、html郁妈、less、img等等各種各樣的文件绍申,進行合并壓縮噩咪,最后,自動構(gòu)建成上線項目极阅。在webpack中胃碾,會默認將我們的前端資源文件,都當做模塊處理筋搏,生成一個對應(yīng)的靜態(tài)資源仆百。webpack自身只支持JS模塊,但是奔脐,通過插件俄周,我們可以加載任何類型的文件。

開始學(xué)習(xí)吧髓迎!

一峦朗、創(chuàng)建項目,下載webpack

項目{src排龄,webpack.config.js}
src{js波势,css,less橄维,img}
默認入口文件為:項目文件夾下面的:./src/index.js
默認輸出目錄為:項目文件夾項目的:./dist/build.js(打包后自動生成)

  • 初始化
npm init
  • 全局安裝webpack尺铣、webpack-cli
npm install webpack -g
npm install webpack-cli  -g
  • 本地安裝webpack、webpack-cli
npm install webpack --save-dev
npm install webpack-cli --save-dev

安裝說明:
~~~~~~~~1. 在webpack 4 以前争舞,不用安裝webpack-cli即可使用迄埃。在webpack4版本以后,它將webpack和webpack-cli分開處理了兑障,需要安裝一個webpack-cli侄非。

~~~~~~~~2. cli,命令行工具流译。任何一個軟件逞怨,想在命令行(CMD)里面去使用,必須有cli工具福澡。

~~~~~~~~3. 實際開發(fā)中叠赦,不會傳輸node_modules文件夾,那么會缺少文件,無法運行除秀。此時糯累,--save發(fā)揮作用:將下載的模塊、插件册踩,添加進正在開發(fā)的項目的依賴中泳姐,即當前下載的插件,添加進:package.json的devDependencies中暂吉。再拿到文件時胖秒,在package.json所在文件夾,執(zhí)行npm install命令慕的,自動下載package.json里面的所有依賴阎肝。

二、運行webpack

~~~~~~~~webpack4以前的版本肮街,打包命令為: webpack src/entry.js dist/build.js风题。
webpack4版本以后,則將命令精簡了嫉父,直接輸入:webpack 即可俯邓。
默認情況下, webpack會識別當前目錄下的src下面的index.js文件熔号。
默認可以打包ES6稽鞭,但是不會轉(zhuǎn)換ES6,打包完還是ES6語法引镊,想變成朦蕴,需要插件。

三弟头、改變默認設(shè)置

~~~~~~~~創(chuàng)建:webpack.config.js
①:內(nèi)置模塊設(shè)置路徑吩抓。
②:暴露一波

const path = require("path");
/* 暴露一波 */
module.exports = {
    /* 修改webpack的默認設(shè)置 */

    /* 設(shè)置入口文件 */
    entry:"./src/js/index.js",
    /* 設(shè)置輸出文件夾,和輸出js文件 */
    output:{
        filename:"build.js",
        path:path.resolve(__dirname,"dist"),
        // publicPath:"./dist/" 這是圖片加載改變路徑
    }
四赴恨,兩種打包模式

①:webpack --mode development 開發(fā)模式疹娶,不壓縮
②: webpack --mode production 生產(chǎn)模式,壓縮代碼
代碼有點長伦连,丟到package.json里運行雨饺。

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "webpack --mode development",
    "pro": "webpack --mode production",
    "ser": "webpack-dev-server --open"
  },

現(xiàn)在,命令行輸入:npm run dev 即可惑淳。

npm run dev
五额港,識別css、less歧焦、img移斩、html

1.下載插件
css-loader,style-loader 負責(zé)處理層疊樣式表
url-loader,file-loader 負責(zé)處理圖片
2.配置webpack.config.js

 module:{
        rules:[
            {
                test:/\.css$/,
                use:["style-loader","css-loader"]
            },
            {
                test:/\.(png|jpg|gif)$/,
                use:[
                    {
                        loader:"url-loader",
                        options:{
                            limit:8192
                        }
                    }
                ]
            },
            {
                test:/\.less$/,
                use:[
                    {
                        loader:"style-loader"
                    },
                    {
                        loader:"css-loader"
                    },
                    {
                        loader:"less-loader"
                    }
                ]
            }
        ]
    }
}

3.圖片問題說明
~~~~~~~~當圖片大于8kb的時候,無法通過二進制數(shù)據(jù)去讀取,會將圖片復(fù)制一份丟到輸出目錄。需要將我們的資源獲取目錄向瓷,跳轉(zhuǎn)到輸出目錄肠套,并配置 輸出publicPath

publicPath:"./dist/"  // 這是圖片加載改變路徑

還可以,直接把html丟進輸出目錄猖任,更加推薦這個方法你稚。

~~~~~~~~為什么把html丟進dist目錄,而不是去配置publicPath超升,因為熱加載入宦。publicPath的作用哺徊,就是讓整個webpack去這個目錄下尋找資源室琢,而熱加載,本身是不會去任何目錄下面尋找資源落追,webpack的熱加載機制盈滴,是在內(nèi)存空間中,創(chuàng)建一個虛擬內(nèi)存轿钠,然后巢钓,動態(tài)的識別所有源碼, 如果說配置了publicPath疗垛,webpack就會放棄從虛擬內(nèi)存中尋找資源症汹,而是會去dist目錄下面尋找資源,必須打包一次贷腕,dist目錄才會改變背镇,所以,導(dǎo)致熱加載失效泽裳。

六瞒斩、熱加載

1.下載webpack-dev-server

npm install webpack-dev-server --save-dev

2.運行webpack-dev-server

webpack-dev-server ---open

熱加載調(diào)試用的,要上線涮总,還是得編譯打包一次胸囱。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市瀑梗,隨后出現(xiàn)的幾起案子烹笔,更是在濱河造成了極大的恐慌,老刑警劉巖抛丽,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件箕宙,死亡現(xiàn)場離奇詭異,居然都是意外死亡铺纽,警方通過查閱死者的電腦和手機柬帕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人陷寝,你說我怎么就攤上這事锅很。” “怎么了凤跑?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵爆安,是天一觀的道長。 經(jīng)常有香客問我仔引,道長扔仓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任咖耘,我火速辦了婚禮翘簇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘儿倒。我一直安慰自己版保,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布夫否。 她就那樣靜靜地躺著彻犁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凰慈。 梳的紋絲不亂的頭發(fā)上汞幢,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音微谓,去河邊找鬼森篷。 笑死,一個胖子當著我的面吹牛堰酿,可吹牛的內(nèi)容都是我干的疾宏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼触创,長吁一口氣:“原來是場噩夢啊……” “哼坎藐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起哼绑,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤岩馍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抖韩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛀恩,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年茂浮,在試婚紗的時候發(fā)現(xiàn)自己被綠了双谆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壳咕。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖顽馋,靈堂內(nèi)的尸體忽然破棺而出谓厘,到底是詐尸還是另有隱情,我是刑警寧澤寸谜,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布竟稳,位于F島的核電站,受9級特大地震影響熊痴,放射性物質(zhì)發(fā)生泄漏他爸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一果善、第九天 我趴在偏房一處隱蔽的房頂上張望诊笤。 院中可真熱鬧,春花似錦岭埠、人聲如沸盏混。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至止喷,卻和暖如春馆类,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背弹谁。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工乾巧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人预愤。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓沟于,卻偏偏與公主長得像,于是被迫代替她去往敵國和親植康。 傳聞我的和親對象是個殘疾皇子旷太,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

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