webpack基礎(chǔ)使用

上一篇《什么是構(gòu)建闷畸?webpack打包思想》
  webpack是在node環(huán)境里跑的播歼,所以先搭建構(gòu)建環(huán)境懊纳。node的安裝很簡(jiǎn)單乎完,去官網(wǎng)下載node 安裝包直接安裝即可熏兄,就跟平常軟件一樣。npm是node自帶的包管理器树姨,對(duì)npm不熟悉建議先看:
安裝完node后摩桶,我們到D盤下,打開(kāi)cmd帽揪,執(zhí)行下面的命令:

1 npm install webpack -g // g全局安裝
2 mkdir movetest //創(chuàng)建項(xiàng)目目錄 movetest(隨便亂起的)
3 cd movetest
4 npm init // 生成package.json
5 npm install webpack@3 //@3指定了3x版本

整個(gè)項(xiàng)目目錄文件如下:

項(xiàng)目結(jié)構(gòu)

dist --webpack打包后的生成目錄
src --項(xiàng)目代碼硝清,里面包含index.html 和main.js

編輯webpack.config.js:

// webpack 是node環(huán)境跑的,模塊化支持CommonJS規(guī)范转晰,不能寫成ES6的形式
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin'); //通過(guò) npm 安裝

module.exports = {
  entry: './src/main.js', 
  output: {
    path: path.resolve(__dirname, 'dist'),  // path node的模塊芦拿,__dirname 指當(dāng)前文件的地址,resolve方法合并地址
    filename: 'my-first-webpack.bundle.js'
  },
  plugins: [
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]
};

entry -- 告訴webpack解析入口挽霉,webpack只懂js
output --告訴webpack構(gòu)建后防嗡,將生成的文件放到哪里
HtmlWebpackPlugin -- 因?yàn)閣ebpack只懂js变汪,對(duì)其他文件的操作需要插件或者loader(后面介紹)來(lái)完成侠坎。這個(gè)插件告訴webpack,將打包后的文件引入到index.html中裙盾。而我們需要安裝這個(gè)插件实胸,在cmd命令界面中執(zhí)行npm install html-webpack-plugin

然后index.html 和 main.js 分別:

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
   <title></title>
</head>
<body>
</body>
</html>
alert('my-first-webpack-test')   // main.js

然后我們到cmd命令界面執(zhí)行:webpack --config webpack.config.js,然后我們看到webpack構(gòu)建信息番官,
webpack幫我們生成了兩個(gè)文件my-first-webpack.bundle.js 以及index.html庐完, 其實(shí)就是我們配置文件webpack.config.js 中定義的 filename

webpack構(gòu)建信息

同時(shí)打開(kāi)dist目錄


dist目錄

查看index.html代碼:


index.html

打開(kāi)index.html

有趣的是,my-first-webpack.bundle.js 代碼就比較復(fù)雜了徘熔。這里不貼圖了门躯,但我們知道我們打包成功了。
其實(shí)webpack的構(gòu)建過(guò)程:
根據(jù)入口main.js酷师,分析整個(gè)項(xiàng)目的引入了哪些js文件或者css文件或者font資源文件讶凉,然后打包構(gòu)建,輸出到我們配置的目錄下山孔,并引入到index.html中懂讯。那么我們就可以在main.js中引入css文件和其他js文件

在src下添加reset.css 和 other.js

/*reset.css*/
body{
    color: red;
    font-size: 30px;
}
//other.js
document.write('如果引入成功,字體大小是30px台颠,并且是紅色褐望,能看到這段文字')

修改main.js

// 引入兩個(gè)文件
require('./reset.css')
require('./other.js')

同時(shí),我們需要修改一下webpack.config.js,但是webpack只懂js,對(duì)于非js文件瘫里,我們要引入對(duì)應(yīng)的處理loader工具实蔽,我們這次要引入的是css-loader和style-loader來(lái)處理我們的css代碼


修改webpack.config.js

當(dāng)然,我們也要npm install css-loader style-loader谨读。配置文件中盐须,test是正則匹配,告訴webpack漆腌,只要你遇到是css文件贼邓,交由css-loader處理, 處理完后再由style-loader處理成style標(biāo)簽樣式引入闷尿,使其生效塑径。OK,讓我們重新打包一下填具,命令行執(zhí)行 : webpack --config webpack.config.js

再一次打包成功.png

打開(kāi)dist/index.html
看到引入文件成功

這時(shí)你可能懵逼了统舀,為什么對(duì)html文件就用plugin,對(duì)css就用loader劳景?其實(shí)兩者的區(qū)別是:
loader 用于對(duì)模塊的源代碼進(jìn)行轉(zhuǎn)換誉简,它參與webpack構(gòu)建中,幫助對(duì)非JS文件的處理盟广,或者對(duì)于那些用ES6闷串、ES7(新js規(guī)范)寫的js文件處理,處理成webpack可識(shí)別的模塊筋量,再由webpack打包處理烹吵;而plugin是webpack構(gòu)建周期執(zhí)行的,比如webpack構(gòu)建打包完成完成后桨武,調(diào)用html-webpack-plugin將生成的bundle.js 注入到index.html肋拔。

一句話:loader是幫助webpack處理它不能處理的文件,變成webpack可識(shí)別的js模塊呀酸,而對(duì)應(yīng)plugin這是webpack構(gòu)建周期中的鉤子函數(shù)凉蜂,比如:
開(kāi)始構(gòu)建起,做點(diǎn)什么性誉,
loader處理css文件窿吩,做點(diǎn)什么
loader處理font文件,做點(diǎn)什么
做點(diǎn)什么構(gòu)建完成后艾栋,做點(diǎn)什么
由plugin來(lái)?yè)?dān)任

OK爆存,我們已經(jīng)明白了webpack基本概念與處理方式,接下來(lái)我們從vue-cli工具生成的工程來(lái)學(xué)習(xí)webpack的配置蝗砾。
下一篇 《從vue-cli生成工程學(xué)webpack配置》

系列文章:
《什么是構(gòu)建先较? webpack打包思想携冤?》
《webpack基礎(chǔ)使用》
《從vue-cli學(xué)webpack配置1——針對(duì)webpack2》
《從vue-cli學(xué)webpack配置2——針對(duì)webpack3》
《webpack 、mainfest 闲勺、runtime 曾棕、緩存與CommonsChunkPlugin》
《webpack打包慢的解決方案》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市菜循,隨后出現(xiàn)的幾起案子翘地,更是在濱河造成了極大的恐慌,老刑警劉巖癌幕,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衙耕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡勺远,警方通過(guò)查閱死者的電腦和手機(jī)橙喘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胶逢,“玉大人厅瞎,你說(shuō)我怎么就攤上這事〕踝梗” “怎么了和簸?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)碟刺。 經(jīng)常有香客問(wèn)我锁保,道長(zhǎng),這世上最難降的妖魔是什么南誊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任身诺,我火速辦了婚禮,結(jié)果婚禮上抄囚,老公的妹妹穿的比我還像新娘。我一直安慰自己橄务,他們只是感情好幔托,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蜂挪,像睡著了一般重挑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棠涮,一...
    開(kāi)封第一講書(shū)人閱讀 52,184評(píng)論 1 308
  • 那天谬哀,我揣著相機(jī)與錄音,去河邊找鬼严肪。 笑死史煎,一個(gè)胖子當(dāng)著我的面吹牛谦屑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播篇梭,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼氢橙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了恬偷?” 一聲冷哼從身側(cè)響起悍手,我...
    開(kāi)封第一講書(shū)人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎袍患,沒(méi)想到半個(gè)月后坦康,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诡延,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年涝焙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孕暇。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仑撞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出妖滔,到底是詐尸還是另有隱情隧哮,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布座舍,位于F島的核電站沮翔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏曲秉。R本人自食惡果不足惜采蚀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望承二。 院中可真熱鬧榆鼠,春花似錦、人聲如沸亥鸠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)负蚊。三九已至神妹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間家妆,已是汗流浹背鸵荠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伤极,地道東北人蛹找。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓姨伤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親熄赡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子姜挺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

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

  • 版權(quán)聲明:本文為博主原創(chuàng)文章拧篮,未經(jīng)博主允許不得轉(zhuǎn)載词渤。 webpack介紹和使用 一、webpack介紹 1串绩、由來(lái) ...
    it筱竹閱讀 11,157評(píng)論 0 21
  • webpack 介紹 webpack 是什么 為什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert閱讀 6,475評(píng)論 2 71
  • 目錄第1章 webpack簡(jiǎn)介 11.1 webpack是什么缺虐? 11.2 官網(wǎng)地址 21.3 為什么使用 web...
    lemonzoey閱讀 1,739評(píng)論 0 1
  • 無(wú)意中看到zhangwnag大佬分享的webpack教程感覺(jué)受益匪淺,特此分享以備自己日后查看礁凡,也希望更多的人看到...
    小小字符閱讀 8,178評(píng)論 7 35
  • 歐陽(yáng)金焱 今天我真高興高氮,因?yàn)橐凸⑼馄徘昱啤⒌艿芤黄鹑⒂^座落在貴州省平塘縣的目前世界上最大的單...
    Mickey_Ouyang閱讀 495評(píng)論 0 1