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'] }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

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

友情链接更多精彩内容