6图甜、webpack從0到1-less碍粥、sass、postcss

還是延續(xù)上節(jié)的內(nèi)容黑毅,webpack如何處理less嚼摩、sass這種預(yù)編譯樣式文件。
本節(jié)的內(nèi)容主要是postcss的運(yùn)用矿瘦,postcss很強(qiáng)大枕面,我們小試牛刀用它來實(shí)現(xiàn)在不同的瀏覽器中為我們自動添加前綴如-webkit--moz-等等以做兼容缚去。
git倉庫:webpack-demo

1潮秘、處理sass

  • 繼續(xù)沿用上一章的代碼放置新建文件夾chapter6下。
  • 首先易结,我們需要安裝處理sass文件相關(guān)的loader->webpack之sass-loader枕荞。
$ cd chapter6
$ npm install sass-loader node-sass --save-dev
  • 然后我們需要在webpack.config.js中配置它。
...
  module: {
    rules: [
      // 處理sass
      {
        test: /\.s[ac]ss$/i,
        use: [
          "style-loader",
          "css-loader",
          "sass-loader" // 將 Sass 編譯成 CSS搞动,默認(rèn)使用 Node Sass
        ]
      },
    ]
  }
...

2躏精、新建

  • 進(jìn)入到項(xiàng)目中在src/styles下新建content.scss文件,用來測試鹦肿。
 webpack-demo/chapter6
  ...
  |- /src
    |- /assets
    |- /styles
       |- header.css
+      |- content.scss
    |- logo.js
    |- header.js
    |- content.js
    |- footer.js
    |- index.js
    |- header.css
  |- index.html
  |- package.json
  |- webpack.config.js
  ...  
  • content.js中隨便輸入幾行`sass語法:
body {
  .content {
    background: green;
  }
}
  • src/content.js中給這個塊級元素添加一個.content類名矗烛。
export function createContent() {
   const div = document.createElement("div");
   div.innerText = "主體內(nèi)容";
+  div.classList.add("content");
   document.body.appendChild(div);
}
  • src/index.js模塊中引入這個content.scss文件。
import { createLogo } from "./logo";
import { createHeader } from "./header";
import { createContent } from "./content";
import { createFooter } from "./footer";

import "./styles/header.css";
+ import "./styles/content.scss";

createLogo();
createHeader();
createContent();
createFooter();
  • 然后我們npm run build打包后再打開dist/index.html就可以看到內(nèi)容塊的新增的綠色背景樣式了箩溃。這樣就證明我們的sass處理打包就成功了瞭吃。

3碌嘀、處理less

  • 過程與上同理,在src/styles目錄下新建用來測試的相關(guān)footer.less文件并在src/index.js中引入它用來測試看效果虱而,就不浪費(fèi)篇幅了筏餐,具體可以看倉庫代碼。

  • 安裝并配置less-loader牡拇,然后打包刷新瀏覽器就可以看到效果了魁瞪。

$ npm install less less-loader --save-dev
...
  module: {
    rules: [
      ...
      // 處理less
      {
        test: /\.less$/,
        use: ["style-loader", "css-loader", "less-loader"]
      },
      ...
    ]
  }
...

4、安裝postcss

  • 現(xiàn)在我們有這么一個常見的需求場景惠呼,比如說當(dāng)我們使用css3新特性的時候导俘,我們需要根據(jù)不同的瀏覽器自動加上瀏覽器前綴如-webkit--moz-等等以做兼容剔蹋。怎么處理旅薄?先動手用一下,后面再來小結(jié)泣崩,先安裝postcss:
$ npm i postcss-loader --save-dev
  • 然后我們還需要安裝能給我們css3自動添加瀏覽器前綴的插件autoprefixer少梁。
$ npm install autoprefixer --save-dev
  • src/styles/content.scss中寫點(diǎn)css3語法用來測試。
.header {
   background: green;
+  box-shadow: 0 0 20px green;
}

4矫付、配置postcss

  • chapter6目錄下新建一個postcss.config.js文件并配置添加這個剛剛安裝的autoprefixer插件凯沪。
 webpack-demo/chapter6
  ...
  |- /src
  |- index.html
  |- package.json
+ |- postcss.config.js
  |- webpack.config.js
  ...  
+  module.exports = {
+    plugins: {
+      "autoprefixer": {}
+    }
+  };
  • webpack.config.js中配置這個post-loader。我這里以應(yīng)用scss文件為例买优,其它樣式文件也是一樣的配置妨马,詳見源碼。(這個loader放置的位置順序要注意一下)
...
  module: {
    rules: [
      // 處理sass
      {
        test: /\.s[ac]ss$/i,
        use: [
          "style-loader",
          "css-loader",
+         "postcss-loader", // 因?yàn)檫@里處理的是css文件杀赢,所以要放在sass-loader的上面
          "sass-loader"
        ]
      },
    ]
  }
...
  • 到了這一步烘跺,基本配置就完成了,但是還有一個東西一定要記得設(shè)置脂崔,不然壓根沒效果滤淳。進(jìn)入到package.json中,我們要設(shè)置所支持的瀏覽器列表脱篙,切記=壳!0砝А(這一步很重要文搂,我就是忘記設(shè)置這一步,導(dǎo)致一直沒效果秤朗,找了很久的問題C翰洹!!)
{
...
+  "browserslist": [
+    "> 1%",
+    "last 2 versions"
+  ]
...
}
  • 然后我們輸入命令打包硝皂,在瀏覽器中打開dist/index.html就可以看到自動為我們添加好了前綴了常挚。

4、小結(jié)

  • Ok稽物,小結(jié)一下奄毡,對于lesssass的處理很簡單,不過是上一節(jié)處理css文件的一個延伸罷了贝或,不多說吼过,主要說下postcss
  • 對于postcss這個怎么用的你應(yīng)該親自實(shí)踐過了咪奖,并且有了一個基本的認(rèn)識盗忱。
  • 首先我想說,你可以把postcss也理解為一個羊赵?趟佃?生態(tài)平臺吧,就像是webpack可以有很多的loader來給它賦能昧捷,postcss也有許多插件來給它賦能闲昭。
  • postcss也同樣有許多來給它賦能(官網(wǎng)上就列舉了許多),如上面我們用到的autoprefixer插件靡挥,另外還有我們一般用postcss-px-to-viewport插件來實(shí)現(xiàn)使用vw實(shí)現(xiàn)移動端適配移動端適配等等汤纸,

參考鏈接:
postcss-loader
webpack css-loader

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市芹血,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌楞慈,老刑警劉巖幔烛,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異囊蓝,居然都是意外死亡饿悬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門聚霜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狡恬,“玉大人,你說我怎么就攤上這事蝎宇〉芫ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵姥芥,是天一觀的道長兔乞。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么庸追? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任霍骄,我火速辦了婚禮,結(jié)果婚禮上淡溯,老公的妹妹穿的比我還像新娘读整。我一直安慰自己,他們只是感情好咱娶,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布米间。 她就那樣靜靜地躺著,像睡著了一般豺总。 火紅的嫁衣襯著肌膚如雪车伞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天喻喳,我揣著相機(jī)與錄音另玖,去河邊找鬼。 笑死表伦,一個胖子當(dāng)著我的面吹牛谦去,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蹦哼,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼鳄哭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了纲熏?” 一聲冷哼從身側(cè)響起妆丘,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎局劲,沒想到半個月后勺拣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鱼填,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年药有,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苹丸。...
    茶點(diǎn)故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡愤惰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赘理,到底是詐尸還是另有隱情宦言,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布感憾,位于F島的核電站蜡励,受9級特大地震影響令花,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凉倚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一兼都、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧稽寒,春花似錦扮碧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宏侍,卻和暖如春赖淤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谅河。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工咱旱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绷耍。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓吐限,卻偏偏與公主長得像,于是被迫代替她去往敵國和親褂始。 傳聞我的和親對象是個殘疾皇子诸典,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評論 2 359

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

  • webpack 是一個現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler)。 當(dāng) ...
    osborne閱讀 304評論 0 1
  • Webpack學(xué)習(xí)總結(jié) 此文只是自己學(xué)習(xí)webpack的一些總結(jié)崎苗,方便自己查閱狐粱,閱讀不變,非常抱歉5ㄊ脑奠! 下載安裝:...
    Lxs_597閱讀 952評論 0 0
  • 在現(xiàn)在的前端開發(fā)中,前后端分離幅慌、模塊化開發(fā)、版本控制轰豆、文件合并與壓縮胰伍、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,448評論 1 32
  • webpack 是一個現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler)。 當(dāng) ...
    吳少在coding閱讀 686評論 2 5
  • 與同修姐妹聊天酸休、關(guān)于為什么想做超人骂租? 回憶我的童年、在出生后被姥姥養(yǎng)大斑司、媽媽的奶一口沒有吃過渗饮、爸爸更是游離于家庭之...
    極簡如蟬閱讀 137評論 0 0