【W(wǎng)EBPACK】分離css單獨(dú)打包

時(shí)間:2018-11-21 00:58:56
這篇文章非常非常早了,webpack4下已經(jīng)無法用了惫霸, 最新可以看這里webpack實(shí)戰(zhàn)場景系列

原文地址:http://www.izhongxia.com/posts/4676.html

CHANGELOG

2018-02-08 14:46:06

剛看了下,網(wǎng)上查了 webpack單獨(dú)打包c(diǎn)ss屈梁,找到的文章惕味,本文比較靠前,但是由于寫的比較混亂把兔,因此重新整理一下內(nèi)容沪伙,更通俗易懂一點(diǎn)。

2018-02-01 14:45:23

由于這篇文章只寫了如何把CSS打包成一個(gè)CSS文件县好,沒有講解如何打包成多個(gè)CSS文件围橡,經(jīng)簡友提點(diǎn),這里添加上了 打包成多個(gè)CSS文件的方法缕贡。

2016-05-17 11:55

剛學(xué)習(xí)webpack翁授,記錄一下webpack如何單獨(dú)打包c(diǎn)ss


零拣播、介紹

以下是個(gè)人項(xiàng)目中總結(jié)出來的一些基本知識,記錄在這里收擦,加深自己的印象贮配,也讓大家能夠更快速方便的了解webpack,并且使用它塞赂。能力所限泪勒,有錯(cuò)誤或者問題,請幫忙指出减途。

webpack 把所有的資源都當(dāng)成了一個(gè)模塊, CSS,Image, JS 字體文件 都是資源, 都可以打包到一個(gè) bundle.js 文件中.

image.png

webpack基本的使用很簡單酣藻,但是要方方面面都講解的話內(nèi)容很多,因此這邊主要講解一下 如何使用webpack單獨(dú)打包c(diǎn)ss鳍置。

至于打包出來辽剧,怎么加hash值,怎么替換html中的引用路徑税产,怎么上傳到CND可以使用gulp來實(shí)現(xiàn)怕轿。【有興趣后面在寫一篇文章】

一辟拷、extract-text-webpack-plugin 用法

單獨(dú)打包c(diǎn)ss撞羽,在webpack需要使用一個(gè)插件,extract-text-webpack-plugin

1. 安裝extract-text-webpack-plugin

// use npm 
npm install extract-text-webpack-plugin --save-dev

// or use yarn 
yarn add extract-text-webpack-plugin

2. 配置

加載器里面寫好插件的配置(使用什么加載器)衫冻,在webpack的 plugins 里面設(shè)置抽離出來的CSS文件名叫什么诀紊。

var Ex = require('extract-text-webpack-plugin');
// ...省略
module: {
  loaders: [{
    test: /\.less/,
    loader: Ex.extract('style-loader', 'css-loader','less-loader')  // 單獨(dú)打包出CSS,這里配置注意下
  }]
},
plugins: [
  new Ex("【name】.css")
]

稍微詳細(xì)點(diǎn)隅俘,可以參考這個(gè)《extract-text-webpack-plugin 的使用及安裝》


<font color="red">下面放兩個(gè)實(shí)際使用例子邻奠,方便大家理解</font>

二、單頁面應(yīng)用为居,把JS里面的CSS單獨(dú)打包

打包一個(gè)文件碌宴,只需要常規(guī)的在入口的js文件引用 css文件即可, 打包成多個(gè)CSS文件蒙畴,可以設(shè)置多個(gè)CSS入口贰镣,讓webpack用 loader去打包。 和分割單獨(dú)打包js文件一樣膳凝。下面有兩個(gè)例子碑隆。

// webpack 1.x 配置   【早期使用的配置,那時(shí)候是1.x】
/*   webpack.config.js   */
var precss = require('precss');
var cssnext = require('cssnext');
var autoprefixer = require('autoprefixer');
var cssnano = require('cssnano');
var Ex = require('extract-text-webpack-plugin');
module.exports = {
    entry: './index.js',
    output: {
      filename: 'index.js'
    },
    module: {
      loaders: [{
        test: /\.less/,
        loader: Ex.extract('style-loader', 'css-loader','less-loader')  // 單獨(dú)打包出CSS蹬音,這里配置注意下
      }]
    },
    plugins: [
      new Ex("【name】.css")
    ]
  }

三上煤、webpack如何打包多個(gè)CSS文件

2. 配置文件添加對應(yīng)配置

下面直接提供一個(gè)完成的多入口CSS打包配置

// webpack 3.x 的配置
var path = require('path')
var glob = require('globby')  
var webpack = require('webpack')
var ExtractTextPlugin = require('extract-text-webpack-plugin')

// CSS入口配置
var CSS_PATH = {
  css: {
    pattern: ['./src/**/[^_]*.less', '!./src/old/**/*.less'],
    src: path.join(__dirname, 'src'),
    dst: path.resolve(__dirname, 'static/build/webpack'),
  }
}

// 遍歷除所有需要打包的CSS文件路徑
function getCSSEntries(config) {
  var fileList = glob.sync(config.pattern)
  return fileList.reduce(function (previous, current) {
    var filePath = path.parse(path.relative(config.src, current))
    var withoutSuffix = path.join(filePath.dir, filePath.name)
    previous[withoutSuffix] = path.resolve(__dirname, current)
    return previous
  }, {})
}

module.exports = [
  {
    devtool: 'cheap-module-eval-source-map',
    context: path.resolve(__dirname),
    entry: getCSSEntries(CSS_PATH.css),
    output: {
      path: CSS_PATH.css.dst,
      filename: '[name].css'
    },
    module: {
      rules: [
        {
          test: /\.less$/,
          use: ExtractTextPlugin.extract({
            use: ['css-loader', 'postcss-loader', 'less-loader']
          })
        }
      ]
    },
    resolve: {
      extensions: ['.less']
    },
    plugins: [
      new ExtractTextPlugin('[name].css'),
    ]
  },
// 如果還需要打包js,則可以在這里增加一個(gè)單獨(dú)打包js的處理【根據(jù)自己需求來】
// {
//    entry:{},
//    output:{},
//    ... 省略
// }
]

可能有同學(xué)還在使用webpack1.x,所以這里在貼一下webpack1.x 的簡單配置

// webpack 1.x 版本
// ...其他配置和webpack3.x一樣
module: {
    loaders: [
        {
            test: /\.less$/,
            loader: ExtractTextPlugin.extract("style-loader","css-loader","postcss-loader","less-loader")
        },
    ]
}
plugins: [
  new ExtractTextPlugin('[name].css'),
]
// ...其他配置和webpack3.x一樣
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祟绊,一起剝皮案震驚了整個(gè)濱河市楼入,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌牧抽,老刑警劉巖嘉熊,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扬舒,居然都是意外死亡阐肤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門讲坎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孕惜,“玉大人,你說我怎么就攤上這事晨炕∩阑” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵瓮栗,是天一觀的道長削罩。 經(jīng)常有香客問我,道長费奸,這世上最難降的妖魔是什么弥激? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮愿阐,結(jié)果婚禮上微服,老公的妹妹穿的比我還像新娘。我一直安慰自己缨历,他們只是感情好以蕴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著戈二,像睡著了一般舒裤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上觉吭,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天腾供,我揣著相機(jī)與錄音,去河邊找鬼鲜滩。 笑死伴鳖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的徙硅。 我是一名探鬼主播榜聂,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嗓蘑!你這毒婦竟也來了须肆?” 一聲冷哼從身側(cè)響起匿乃,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎豌汇,沒想到半個(gè)月后幢炸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拒贱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年宛徊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逻澳。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闸天,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斜做,到底是詐尸還是另有隱情苞氮,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布瓤逼,位于F島的核電站葱淳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抛姑。R本人自食惡果不足惜赞厕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望定硝。 院中可真熱鬧皿桑,春花似錦、人聲如沸蔬啡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽箱蟆。三九已至沟绪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間空猜,已是汗流浹背绽慈。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辈毯,地道東北人坝疼。 一個(gè)月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像谆沃,于是被迫代替她去往敵國和親钝凶。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

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

  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺唁影,特此分享以備自己日后查看耕陷,也希望更多的人看到...
    小小字符閱讀 8,171評論 7 35
  • GitChat技術(shù)雜談 前言 本文較長掂名,為了節(jié)省你的閱讀時(shí)間,在文前列寫作思路如下: 什么是 webpack哟沫,它要...
    蕭玄辭閱讀 12,697評論 7 110
  • 前言 WebPack 是什么铆隘? WebPack 是什么,WebPack 可以看做是模塊打包機(jī):它做的事情是南用,分析你...
    Promise__閱讀 1,128評論 3 12
  • 在現(xiàn)在的前端開發(fā)中,前后端分離掏湾、模塊化開發(fā)裹虫、版本控制、文件合并與壓縮融击、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,443評論 1 32
  • 說好昨天更文筑公,首先為失言感到抱歉,臨時(shí)朋友喊出去吃飯打亂計(jì)劃尊浪。 利用做實(shí)驗(yàn)的空余時(shí)間看完了圍城匣屡,也...
    小抗體閱讀 774評論 2 1