Webpack的使用

webpack 2,3版本的網(wǎng)站 : https://webpack.js.org/

什么是WebPack出革,為什么要使用它?

WebPack可以看做是模塊打包機:它做的事情是,分析你的項目結(jié)構(gòu)脾猛,找到JavaScript模塊以及其它的一些瀏覽器不能直接運行的拓展語言(Scss箍镜,TypeScript等),并將其打包為合適的格式以供瀏覽器使用渔欢。

WebPack和Grunt以及Gulp相比有什么特性

其實Webpack和另外兩個并沒有太多的可比性墓塌,Gulp/Grunt是一種能夠優(yōu)化前端的開發(fā)流程的工具,而WebPack是一種模塊化的解決方案奥额,不過Webpack的優(yōu)點使得Webpack可以替代Gulp/Grunt類的工具苫幢。

Grunt和Gulp的工作方式是:在一個配置文件中,指明對某些文件進行類似編譯垫挨,組合韩肝,壓縮等任務(wù)的具體步驟,這個工具之后可以自動替你完成這些任務(wù)棒拂。


Webpack的工作方式是:把你的項目當做一個整體伞梯,通過一個給定的主文件(如:index.js),Webpack將從這個文件開始找到你的項目的所有依賴文件帚屉,使用loaders處理它們谜诫,最后打包為一個瀏覽器可識別的JavaScript文件。


如果實在要把二者進行比較攻旦,Webpack的處理速度更快更直接喻旷,能打包更多不同類型的文件。


開始使用Webpack

1.安裝

在安裝 Webpack 前牢屋,你本地環(huán)境需要支持node.js


全局安裝 npm install -g webpack

安裝到項目目錄 npm install --save-dev webpack



2.開始?

1.在終端中使用npm init命令可以自動創(chuàng)建這個package.json文件

2.安裝到項目目錄 npm install --save-dev webpack

3.創(chuàng)建兩個文件夾,app文件夾和public文件夾且预,app文件夾用來存放原始數(shù)據(jù)和我們將寫的JavaScript模塊,public文件夾用來存放準備給瀏覽器讀取的數(shù)據(jù)(包括使用webpack生成的打包后的js文件以及一個index.html文件)烙无。在這里還需要創(chuàng)建三個文件锋谐,index.html 文件放在public文件夾中,兩個js文件(Greeter.js和main.js)放在app文件夾中截酷,此時項目結(jié)構(gòu)如下圖所示


index.html文件只有最基礎(chǔ)的html代碼涮拗,它唯一的目的就是加載打包后的js文件(bundle.js)


Greeter.js只包括一個用來返回包含問候信息的html元素的函數(shù)。

main.js用來把Greeter模塊返回的節(jié)點插入頁面。


正式使用Webpack

webpack可以在終端中使用三热,其最基礎(chǔ)的命令是

webpack 入口文件(例如 main.js)? 出口文件(例 bundle.js)

結(jié)果如下




通過配置文件來使用Webpack(另外一種方式)

Webpack擁有很多其它的比較高級的功能(比如說本文后面會介紹的loaders和plugins)鼓择,這些功能其實都可以通過命令行模式實現(xiàn),但是正如已經(jīng)提到的就漾,這樣不太方便且容易出錯的呐能,一個更好的辦法是定義一個配置文件,這個配置文件其實也是一個簡單的JavaScript模塊抑堡,可以把所有的與構(gòu)建相關(guān)的信息放在里面摆出。

還是繼續(xù)上面的例子來說明如何寫這個配置文件,在當前練習文件夾的根目錄下新建一個名為webpack.config.js (文件名是固定的)的文件首妖,并在其中進行最最簡單的配置懊蒸,如下所示,它包含入口文件路徑和存放打包后文件的地方的路徑悯搔。

新建 webpack.config.js 配置文件

module.exports={

entry:"./src/main.js",//打包的入口

output:{

path:path.join(__dirname,'./dist/'),? //path必須是絕對路徑,用來配置資源打包的出口目錄

filename:"bundle.js",

//在打包結(jié)果中,webpack默認將內(nèi)容的資源應(yīng)用路徑是相對于bundle.js文件舌仍,就是

//注:這里用到的path.join()指令是node的方法妒貌,使用的話需要var path=require('path'),先 引入 才可以使用

}

}

現(xiàn)在如果你需要打包文件只需要在終端里你運行webpack(非全局安裝需使用node_modules/.bin/webpack)命令就可以了铸豁,這條命令會自動參考webpack.config.js文件中的配置選項打包你的項目灌曙,輸出結(jié)果如下


又學會了一種使用Webpack的方法,而且不用管那煩人的命令行參數(shù)了节芥,有沒有感覺很爽在刺。有沒有想過如果可以連webpack(非全局安裝需使用node_modules/.bin/webpack)這條命令都可以不用,那種感覺會不會更爽~头镊,繼續(xù)看下文蚣驼。

更快捷的執(zhí)行打包任務(wù)

執(zhí)行類似于node_modules/.bin/webpack這樣的命令其實是比較煩人且容易出錯的,不過值得慶幸的是npm可以引導(dǎo)任務(wù)執(zhí)行相艇,對其進行配置后可以使用簡單的npm start命令來代替這些繁瑣的命令颖杏。在package.json中對npm的腳本部分進行相關(guān)設(shè)置即可,設(shè)置方法如下坛芽。

{

"name": "webpack-sample-project",

"version": "1.0.0",

"description": "Sample webpack project",

"scripts": {

"build": "webpack" //配置的地方就是這里啦留储,運行指令可以直接寫npm run build

},

"author": "zhang",

"license": "ISC",

"devDependencies": {

"webpack": "^1.12.9"

}

}


加載css步驟

文檔? https://webpack.js.org/guides/asset-management/#loading-css

1. npm install --save-dev style-loader css-loader

2.webpack.config.js

module: {

rules: [

{

test: /\.css$/,? //正則匹配css文件解析

use: [

'style-loader',

'css-loader'? //注意:這里必須style在前 ,css在后

]

}

]

}

};

Loading Images 圖片加載

文檔? https://webpack.js.org/guides/asset-management/#loading-images

1咙轩、加載

npm install --save-dev file-loader

2.配置 webpack.config.js

{

test: /\.(png|svg|jpg|gif)$/,

use: [

'file-loader'

]

}

Webpack Sample Project




作者:zhangwang

鏈接:http://www.reibang.com/p/42e11515c10f

來源:簡書

著作權(quán)歸作者所有获讳。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處活喊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丐膝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌尤误,老刑警劉巖侠畔,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異损晤,居然都是意外死亡软棺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門尤勋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喘落,“玉大人,你說我怎么就攤上這事最冰∈萜澹” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵暖哨,是天一觀的道長赌朋。 經(jīng)常有香客問我,道長篇裁,這世上最難降的妖魔是什么沛慢? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮达布,結(jié)果婚禮上团甲,老公的妹妹穿的比我還像新娘。我一直安慰自己黍聂,他們只是感情好躺苦,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著产还,像睡著了一般匹厘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上脐区,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天集乔,我揣著相機與錄音,去河邊找鬼坡椒。 笑死扰路,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的倔叼。 我是一名探鬼主播汗唱,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼丈攒!你這毒婦竟也來了哩罪?” 一聲冷哼從身側(cè)響起授霸,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎际插,沒想到半個月后碘耳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡框弛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年辛辨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑟枫。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡斗搞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出慷妙,到底是詐尸還是另有隱情僻焚,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布膝擂,位于F島的核電站虑啤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏架馋。R本人自食惡果不足惜咐旧,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绩蜻。 院中可真熱鬧,春花似錦室埋、人聲如沸办绝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽孕蝉。三九已至,卻和暖如春腌逢,著一層夾襖步出監(jiān)牢的瞬間降淮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工搏讶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留佳鳖,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓媒惕,卻偏偏與公主長得像系吩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子妒蔚,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

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

  • 版權(quán)聲明:本文為博主原創(chuàng)文章帽衙,未經(jīng)博主允許不得轉(zhuǎn)載。 webpack介紹和使用 一贞绵、webpack介紹 1厉萝、由來 ...
    it筱竹閱讀 11,134評論 0 21
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺,特此分享以備自己日后查看但壮,也希望更多的人看到...
    小小字符閱讀 8,171評論 7 35
  • GitChat技術(shù)雜談 前言 本文較長冀泻,為了節(jié)省你的閱讀時間,在文前列寫作思路如下: 什么是 webpack蜡饵,它要...
    蕭玄辭閱讀 12,697評論 7 110
  • 最近在學習 Webpack,網(wǎng)上大多數(shù)入門教程都是基于 Webpack 1.x 版本的,我學習 Webpack 的...
    My_Oh_My閱讀 8,184評論 40 247
  • 作為一個懶癌晚期無可救藥的人弹渔,心底里突然冒出的那丟丟上進心,促使著我寫了這第一篇溯祸。從三月到九月正好滿半年肢专,我恐怕已...
    徐月琴閱讀 101評論 0 0