webpack学习笔记之五 -- css-loader - stylus-loader

在上一篇中,学习了 css-loader 这个组件.

它的作用在于.

  • 在使用 webpack 打包的时候.
  • 如过碰到 import xxx.css ,就使用这个 css-loader 加载 .css 文件内容.
  • 如果仅仅只有 css-loader , .css 文件里的的内容,仅仅只是写入打包的js代码(bundle.js).但在页面上并不会生效.
  • 当搭配 style-loader ['style-loader','css-loader'] 之后,可以将 .css 代码写入到页面的 HTML 文件的<head>中(以<style></style>形式).

less-loader & stylus-loader

到目前我们知道了,在 webpack.config.js 文件中,配置 module 节点的目的,是为了在 webpack 遇到 import require等导入文件的语句是,能够选择合理的 loader 去处理这些文件.

比如之前的

  • babel -> .js 处理 import xxx.js 的文件 文件.(当然,webpack本身是认识 .js 文件的,这里的主要是为了语法和API兼容处理)
  • .css -> style-loader & css-loader ,处理 import xxxx.css

在 前端开发中,有一些 CSS 样式预处理框架,比如 .

  • less
  • stylus

在前端开发中,我们也可以创建 .styl & .less 文件.

那么在 import xxx.styl 或者 import xxx.less 文件的时候,肯定也需要对应的loader来处理当前文件的打包工作.

less less-loader

新建一个 webpack.config.js 文件.

写入基本配置.

const path = require('path')

module.exports = {
  entry: path.join(__dirname, 'app/index.js'),
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'bundle.js'
  },

  module: {
    rules: [
      {
        test: /\.js$/,
        loader:'babel-loader' // 两个作用 1. ESX -> ES5 2. API 垫片   
      },
      {
        test: /\.css$/,
        loader: ['style-loader', 'css-loader']
      }
}

这里,我配置了.css文件的 loader , 那么webpack在处理 import xxx.css就没有问题了.

新建一个 index.html文件.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <p class="cssFile"></p>
  <p class="lessFile"></p>
  <p class="stylusFile"></p>
  <script src="bundle.js"></script>
</body>
</html>

新建一个 css-file.css.

.cssFile {
  text-align: center;
  font-size: 30px;
  text-decoration: underline;
}

.cssFile::after {
  content: '这是 css-file.css文件提供的样式'
}

执行 npm run build

image.png

效果

image.png

css-loader ,配置成功.

同理新建一个 less-file.less 文件.

image.png

键入代码

.lessFile {
  font-size: 20px;
  text-align: center;
  text-decoration: line-through;
  color: royalblue;
  &::after {
    content:'这是less-file.less文件提供的样式'
  }
}

安装 less & less-loader

npm i --save-dev less less-loader

webpack.config.jsmoudle 节点中,配置对应 .less 文件的 loader

 {
        test: /\.less$/,
        loader: ['style-loader', 'css-loader', 'less-loader']
      },

index.js 中导入 import './assets/less-file.less'

执行 npm run build

image.png

打包成功.

查看界面

image.png

同理, 新建一个 styl(stylus格式文件的后缀名) 文件.

image.png

并键入一下代码

.stylusFile 
  font-size 40px
  color pink 
  text-align center
  &::after
    content :' 这是 stylus-file.styl 文件提供的样式'
    

安装 stylus & stylus-loader

npm i --save-dev stylus stylus-loader

index.js 文件中导入 import './assets/stylus-file.styl'

执行 npm run build

image.png

查看界面

image.png

image.png

不管目标文件是.css,.less 还是 .styl.最终都是通过 style-loader 写到了页面当中.
**style-loader就是把css写入到HTML.head.style中的一个loader!!******

结论:

  • webpack 中,一个模块就是一个文件.比如 .css .less .styl.
    • 一般模块,都是单个文件,都是使用 import require 来导入.
  • 处理模块的组件在 webpack.config.js 一般是用 module 去配置.
  • webpack打包的时候,碰到了模块,就去找对应的loader 去处理.

.less文件打包配置

  • npm i --save-dev less less-loader
  • webpack.config.js :{ test: /\.less$/, loader: ['style-loader', 'css-loader', 'less-loader'] },

.stylus文件打包配置

  • npm i --save-devi stylus stylus-loader
  • webpack.config.js:{ test: /\.styl$/, loader: ['style-loader', 'css-loader', 'stylus-loader'] }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,123评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,031评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,723评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,357评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,412评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,760评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,904评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,672评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,118评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,456评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,599评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,264评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,857评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,731评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,956评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,286评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,465评论 2 348

推荐阅读更多精彩内容

  • 写在前面的话 阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较...
    不忘初心_9a16阅读 3,232评论 0 17
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 webpack介绍和使用 一、webpack介绍 1、由来 ...
    it筱竹阅读 11,051评论 0 21
  • Webpack学习总结 此文只是自己学习webpack的一些总结,方便自己查阅,阅读不变,非常抱歉!! 下载安装:...
    Lxs_597阅读 936评论 0 0
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,679评论 7 110
  • 感恩感谢姑姑给我的爱和支持,感恩二姨娜姐对我的信任和支持,感恩好种子开花结果,感恩感谢好的转机,感恩感谢积极向上爱...
    德胜阅读 185评论 0 0