Webpack的使用

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

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

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

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

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

Grunt和Gulp的工作方式是:在一個(gè)配置文件中,指明對(duì)某些文件進(jìn)行類似編譯,組合,壓縮等任務(wù)的具體步驟,這個(gè)工具之后可以自動(dòng)替你完成這些任務(wù)。


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


如果實(shí)在要把二者進(jìn)行比較,Webpack的處理速度更快更直接,能打包更多不同類型的文件。


開始使用Webpack

1.安裝

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


全局安裝 npm install -g webpack

安裝到項(xiàng)目目錄 npm install --save-dev webpack



2.開始?

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

2.安裝到項(xiàng)目目錄 npm install --save-dev webpack

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


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


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

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


正式使用Webpack

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

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

結(jié)果如下




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

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

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

新建 webpack.config.js 配置文件

module.exports={

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

output:{

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

filename:"bundle.js",

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

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

}

}

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


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

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

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

{

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

"version": "1.0.0",

"description": "Sample webpack project",

"scripts": {

"build": "webpack" //配置的地方就是這里啦,運(yùn)行指令可以直接寫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://m.itdecent.cn/p/42e11515c10f

來源:簡(jiǎn)書

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容