Webpack輕松入門(二)——CSS打包

上一節(jié)講到如何使用Webpack實現最基礎的打包功能,但是發(fā)現以下幾個比較突出的問題:

① 我們只打包了一個JS文件赤兴,多個文件該如何打包横漏?
② CSS樣式該如何打包抠艾?
③ 每次寫完代碼想要看運行結果都需要手動輸命令打包纫塌,反而降低了開發(fā)效率

沒關系诊县,本文就是為解決這些問題而來的。繼續(xù)上節(jié)實例措左,開始吧依痊!

一、JS模塊化

使用Webpack成功打包多個JS文件最核心的一點就是使用模塊化的開發(fā)方式媳荒,而Webpack支持CommonJS和ES6兩種模塊化規(guī)范抗悍,其中有關CommonJS的語法可以看我之前的一篇文章→JavaScript模塊化編程規(guī)范。本文也將以CommonJS規(guī)范來講解Webpack中的JS模塊化钳枕。

我們在scripts目錄下添加一個module.js文件缴渊,目錄結構如下:

并寫入以下代碼:

// module.js
var text = 'Hello Webpack!';

module.exports = {   // CommonJS規(guī)范中模塊輸出語法
    text: text
};

然后在index.js中引入module.js文件:

// index.js
var module = require('./module.js');   // CommonJS規(guī)范中模塊引入語法

alert(module.text);   // 打包后同樣輸出“Hello Webpack!”

由于我們在上一節(jié)中已經對Webpack的打包入口和輸出路徑進行了基本配置,所以我們只需同樣執(zhí)行npx webpack命令即可將兩個JS文件進行打包輸出到dist目錄鱼炒。

小貼士: 有時輸入的命令比較長衔沼,我們可以將其寫入package.json文件的"scripts"屬性中。

改寫后的package.json如下:

{
  "name": "webpackdemo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack"   
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^4.5.0",
    "webpack-cli": "^2.0.14"
  }
}

接著我們只需執(zhí)行npm run start命令即可(或直接輸入npm start)昔瞧。

二指蚁、打包CSS樣式

1. loader簡介

由于Webpack打包入口目前只配置了一個index.js文件,那么其他需要被打包的文件都必須通過模塊化方式引入該文件才行自晰,而默認情況下凝化,引入的文件必須是js文件(如上面添加的module.js)。

那么其他文件類型該如何進行打包呢酬荞?

這時我們就要用到Webpack中所提供的各種loader搓劫,它就是專門用于處理除JS文件之外的其他格式文件的編譯、提取混巧、合并枪向、打包等工作的。

其中CSS文件的打包需要用到css-loaderstyle-loader兩個loader咧党,css-loader只是用于加載css文件(并沒有添加到頁面)秘蛔,而style-loader則是將打包后的css代碼以<style>標簽形式添加到頁面頭部。

2. 安裝loader

輸入命令npm i -D css-loader style-loader同時安裝這兩個loader傍衡,安裝結束后再在webpack.config.js文件中配置相應的loader深员,具體配置如下:

// webpack.config.js
module.exports = {
    entry: './src/scripts/index.js',   // 打包入口
    output: {   
        path: __dirname + '/dist',   // 輸出路徑
        filename: 'scripts/index.js'    //  輸出文件名
    },
    module: {
        rules: [  
            {
                test: /\.css$/,   // 正則表達式,表示.css后綴的文件
                use: ['style-loader','css-loader']   // 針對css文件使用的loader蛙埂,注意有先后順序辨液,數組項越靠后越先執(zhí)行
            }
        ]
    }
};

3. 開始打包

在css目錄下新建一個style.css文件,并寫入樣式:

/* style.css */
html{ background: #f00;}

然后在index.js中引入該文件:

// index.js
var module = require('./module.js');
require('../css/style.css');   // 引入css樣式

alert(module.text);

最后輸入命令npm start箱残,打包完成后打開index.html頁面后滔迈,你會發(fā)現除了彈出之前的“Hello Webpack!”外止吁,頁面背景顏色也變?yōu)榧t色,說明樣式也已經打包成功燎悍。

三敬惦、自動化打包

通過上面的講解你會發(fā)現,雖然我們已經將命令改成了npm start谈山,然而實際操作上還是得每次手動輸入命令打包俄删,不開心。

我們能不能像以前不用Webpack時那樣奏路,寫完了直接刷新頁面就能看到效果呢畴椰?

答案當然是可以的,我們只需在webpack.config.js中添加watch: true就好鸽粉。

module.exports = {
    entry: './src/scripts/index.js',
    output: {
        path: __dirname + '/dist',
        filename: 'scripts/index.js'
    },
    module: {
        rules: [
            {
                test: /\.css$/,
                use: ['style-loader','css-loader']
            }
        ]
    },
    watch: true   // 監(jiān)聽修改自動打包
};

本文重點總結

① 打包多個文件為一個文件斜脂,必須使用模塊化開發(fā)方式
② 先后使用css-loader和style-loader可以打包CSS樣式并添加至頁面
③ 想要自動化打包,只需在webpack.config.js文件中添加watch: true

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末触机,一起剝皮案震驚了整個濱河市帚戳,隨后出現的幾起案子,更是在濱河造成了極大的恐慌儡首,老刑警劉巖片任,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異蔬胯,居然都是意外死亡对供,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門氛濒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來产场,“玉大人,你說我怎么就攤上這事泼橘±远” “怎么了迈勋?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵炬灭,是天一觀的道長。 經常有香客問我靡菇,道長重归,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任厦凤,我火速辦了婚禮鼻吮,結果婚禮上,老公的妹妹穿的比我還像新娘较鼓。我一直安慰自己椎木,他們只是感情好违柏,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著香椎,像睡著了一般漱竖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上畜伐,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天馍惹,我揣著相機與錄音,去河邊找鬼玛界。 笑死万矾,一個胖子當著我的面吹牛,可吹牛的內容都是我干的慎框。 我是一名探鬼主播良狈,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鲤脏!你這毒婦竟也來了们颜?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤猎醇,失蹤者是張志新(化名)和其女友劉穎窥突,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體硫嘶,經...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡阻问,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了沦疾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片称近。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哮塞,靈堂內的尸體忽然破棺而出刨秆,到底是詐尸還是另有隱情,我是刑警寧澤忆畅,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布衡未,位于F島的核電站,受9級特大地震影響家凯,放射性物質發(fā)生泄漏缓醋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一绊诲、第九天 我趴在偏房一處隱蔽的房頂上張望送粱。 院中可真熱鬧,春花似錦掂之、人聲如沸抗俄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽动雹。三九已至偎快,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間洽胶,已是汗流浹背晒夹。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姊氓,地道東北人丐怯。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像翔横,于是被迫代替她去往敵國和親读跷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容

  • 版權聲明:本文為博主原創(chuàng)文章丐枉,未經博主允許不得轉載。 webpack介紹和使用 一掘托、webpack介紹 1瘦锹、由來 ...
    it筱竹閱讀 11,121評論 0 21
  • 最近在學習 Webpack,網上大多數入門教程都是基于 Webpack 1.x 版本的,我學習 Webpack 的...
    My_Oh_My閱讀 8,184評論 40 247
  • GitChat技術雜談 前言 本文較長,為了節(jié)省你的閱讀時間闪盔,在文前列寫作思路如下: 什么是 webpack弯院,它要...
    蕭玄辭閱讀 12,693評論 7 110
  • 一、webpack的基本概念 webpack 本質上是一個打包工具泪掀,它會根據代碼的內容解析模塊依賴听绳,幫助我們把多個...
    cilla123閱讀 1,538評論 0 8
  • 2017-12-29親愛的老公,今天你休假在家一天异赫,邀請了我的朋友來家里吃晚飯椅挣,你忙活了一下午,自己洗 切 燒祝辣,我...
    美麗心情_a8bf閱讀 193評論 0 2