webpack的CSS加载器的使用


Posted in Javascript onSeptember 11, 2018

什么是loader

loader用于转换应用程序的资源文件,他们是运行在nodejs下的函数,使用参数来获取一个资源的来源并且返回一个新的来源(资源的位置),例如:你可以使用loader来告诉webpack去加载一个coffeeScript或者Babel文件。

loader的解析

loader的解析类似模块,一个loader模块会导出一个方法并且可被nodejs写为可兼容的JavaScript,通常情况下通过npm来管理loader,但你也可以把loader放在自己的应用里。

webpack中常用的加载器

css-loader 处理css中路径引用等问题

用于在js中加载css,解释@import和url()

options

alias: 解析别名

importLoaders(@import): 在css-loader前应用的loader的数目,默认为0

Minimize: true or false 是否开启css代码压缩,比如压缩空格不换行

modules: 是否开启css-module

module.exports = {
 ...
 module: {
  rules: [{
   test: /\.css$/,
   use: ['style-loader', {
    loader: 'css-loader',
    options: {//当css文件中又引用了其他的css的时候,需要设置importLoaders
     importLoaders: 1
    }
   }]
  }]
 }
};

style-loader 动态把样式写入css

加载的css作为style标签内容插入到html中,以<style></style>形式在html页面中插入css代码

options

insertAt: 插入位置

insertInto: 插入到指定的dom

singleton: true or false,多个样式是否只生成一个<style></style>标签

postcss-loader

postcss-loader:为了浏览器的兼容性,有时候我们必须加上-webkitm, -ms, -moz等前缀。目的就是让页面可以在每个浏览器上正常运行。postcss是一个CSS的处理平台可以帮CSS实现更多的功能。

用法:

安装postcss: npm install postcss-loader autoprefixer

配置文件

webpack.config.js:

module: {
 rules: [{
  test: /\.css$/
  loader: 'style-loader!css-loader!postcss-loader'
 }]
}

postcss.config.js

module.exports = {
 plugins: [
  require('autoprefixer')//在postcss-loader中引入autoprefixer插件
 ]
}

或者

const autoprefixer = require('autoprefixer');
module: {
 rules: [{
  test: /\.css$/,
  use: ['style-loader', 'css-loader', {
   loader: 'postcss-loader',
   options: {
    plugins() {
     return [autoprefixer];
    }
   }
  }]
 }]
}

less-style

添加对webpack的LESS支持。当遇到less文件时,先交给less-loader处理,然后交给css-loader,最后交由style-loader处理,然后执行webpack打包

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

要启用CSS的source map,你需要将sourceMap选项传递给less-loader和css-loader

CSS SourceMap信息文件,里面存储着位置信息。随着代码增多,我们会对代码进行压缩,代码压缩之后进行调bug定位会非常困难,于是引入sourceMap记录压缩前后的位置信息,当产生错误时直接定位到未压缩前的位置,方便调试。简单来说就是记录压缩的翻译文件,通过这个文件可以找到你的对应源码

module.exports = {
 ...
 module: {
  rules: [{
   test: /\.less$/,
   use: ['style-loader', 'css-loader', {
    loader: 'less-loader',
    options: {
     sourceMap: true
    }
   }]
  }]
 }
};

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery下的26个实用小技巧(jQuery tips, tricks &amp; solutions)
Mar 01 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
Apr 10 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
Dec 20 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
Sep 18 Javascript
BootStrap Tooltip插件源码解析
Dec 27 Javascript
微信小程序 简单教程实例详解
Jan 13 Javascript
利用Node.js编写跨平台的spawn语句详解
Feb 12 Javascript
完美实现js选项卡切换效果(一)
Mar 08 Javascript
Bootstrap table使用方法记录
Aug 23 Javascript
详解Vue CLI3 多页应用实践和源码设计
Aug 30 Javascript
vue设计一个倒计时秒杀的组件详解
Apr 06 Javascript
vue实现路由切换改变title功能
May 28 Javascript
JavaScript基础教程之如何实现一个简单的promise
Sep 11 #Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
Sep 11 #Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
Sep 11 #Javascript
Angular6 正则表达式允许输入部分中文字符
Sep 10 #Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
Sep 10 #Javascript
详解Eslint 配置及规则说明
Sep 10 #Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
Sep 10 #Javascript
You might like
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
$.each与$().each的区别示例介绍
2014/03/20 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
JSON取值前判断
2014/12/23 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
SVG描边动画
2017/02/23 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
python mysql断开重连的实现方法
2019/07/26 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
如何写好升职自荐信
2014/01/06 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
党员查摆剖析材料
2014/10/10 职场文书
英文慰问信
2015/02/14 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
2015年导购员工作总结
2015/04/25 职场文书
Python 中的 copy()和deepcopy()
2021/11/07 Python
mysql的Buffer Pool存储及原理
2022/04/02 MySQL
Golang gRPC HTTP协议转换示例
2022/06/16 Golang