Webpack4 学习笔记二 CSS模块转换
前言
此内容是个人学习笔记,以便日后翻阅。非教程,如有错误还请指出
webpack 打包css模块
webpack是js模块打包器, 如果在入口文件引入css文件或其它的less、sass等文件,需要特定的 loader去解析它们。
css-loader: 解析css文件并且支持@import()等引入css模块
style-loader: 通过插入 <style> 标记将CSS添加到DOM中
webpack 处理loader的是 module{}, 不要写成 loader: {}
rules: 加载器规则
test: 规则
use: 用什么 loader(加载器)
webpack 配置如下
module.exports = {
...
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
}
}
注意: use中的loader的执行顺序是从右到左, 先使用 css-loader解析css,再使用 style-loader将解析完的css插入DOM文档中
单独抽离css文件样式以及优化CSS文件
我想将解析后的css单独抽离出一个 css文件, 然后通过 like标签的形式引入。
需要使用插件来帮忙, plugins主要是做 loader完成不了的事情。功能很强大。
mini-css-extract-plugin: 此插件将CSS提取到单独的文件中。
- 先安装
- const MixiCssExtractPlugin = require('mini-css-extract-plugin')
webpack配置如下, 基与上面的代码修改
module.exports = {
...
module: {
rules: [
{
test: /\.css$/,
use: [
MixiCssExtractPlugin.loader,
'css-loader'
]
}
]
},
plugins: [
new MixiCssExtractPlugin({
filename: "[name].css",
chunkFilename: "[id].css"
})
]
}
处理 sass文件
需要安装 sass sass-loader
webpack 配置如下
module.exports = {
...
module: {
rules: [
{
test: /\.css$/,
use: [
MixiCssExtractPlugin.loader,
'css-loader',
'sass-loader'
]
}
]
},
plugins: [
new MixiCssExtractPlugin({
filename: "[name].css",
chunkFilename: "[id].css"
})
]
}
优化压缩 css文件和js文件
上面虽然已经可以把 css 单独抽离成一个 css文件, 但是代码并没有得到压缩, 下面进行压缩等优化处理
安装插件:
optimize-css-assets-webpack-plugin: 用于优化\最小化CSS资产的Webpack插件
uglifyjs-webpack-plugin: 用于优化 js资产的 Webpack插件
webpack 配置:
const OptimizeCssAddetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')
const UglifyjsWebpackPlugin = require('uglifyjs-webpack-plugin')
module.exports = {
mode: 'production',
optimization: {
minimizer: [
new UglifyjsWebpackPlugin({
test: /\.js(\?.*)?$/i,
cache: true,
parallel: true, // 并行化可以显著加速构建,因此强烈建议设置为 true
sourceMap: true, // 使用源映射,将错误信息位置映射到模版
}),
// 使用压缩css插件之前,一定要使用 uglifyjs-webpack-plugin插件对js代码进行压缩
new OptimizeCssAddetsWebpackPlugin({}),
]
},
module: {
rules: [
{
test: /\.css$/,
use: [
MixiCssExtractPlugin.loader,
'css-loader',
'sass-loader'
]
}
]
},
plugins: [
new MixiCssExtractPlugin({
filename: "[name].css",
chunkFilename: "[id].css"
})
]
}
笔记地址
Webpack4 学习笔记二 CSS模块转换的更多相关文章
- amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules
amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules 一.总结 1.am:以 am 为命名空间 2.模块状态: {命名空间}-{模块名}-{状态描述} 3.子模块: {命名空间}- ...
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- Linux内核学习笔记二——进程
Linux内核学习笔记二——进程 一 进程与线程 进程就是处于执行期的程序,包含了独立地址空间,多个执行线程等资源. 线程是进程中活动的对象,每个线程都拥有独立的程序计数器.进程栈和一组进程寄存器 ...
- ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring
接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...
- python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法
python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...
- python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码
python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...
- python3.4学习笔记(二) 类型判断,异常处理,终止程序
python3.4学习笔记(二) 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 #引入外部模块 import xxx #random模块,randint(开始数,结束数) ...
随机推荐
- CAD安装失败怎样卸载CAD 2010?错误提示某些产品无法安装
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- 3d Max 2018安装失败怎样卸载3dsmax?错误提示某些产品无法安装
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- 详解在Hibernate中配置数据库方言的作用和好处以及各种数据库的方言连接
Hibernate底层依然使用SQL语句来执行数据库操作,虽然所有关系型数据库都支持使用标准SQL语句,但所有数据库都对标准SQL进行了一些扩展,所以在语法细节上存在一些差异,因此Hibernate需 ...
- 动态行转列 pivot实现
declare @sql varchar(8000) begin set @sql='' --初始化变量@sql select @sql= ...
- VueJs组件prop验证简单理解
今天看了vuejs的组件,看到了prop组件,主要作用是在传入数据的时候对传入的值做判断,写了个小例子. <div id="app"> <my-child :nu ...
- While, DoWhile in WorkFlow.
On 03/03/2010, in 4.0, WF, by bcakiroglu While Activity In a While activity, the activity in the Bod ...
- (C# 基础) 类访问修饰符
C# 中有5个权限修饰符,用于控制对对象的访问权限. 1. public: 访问不受限制. namespace, enum成员,interface成员 隐式的具有public 修饰符,不能在显式添 ...
- vos话务抽查小方法
问题: 假如现在公司落地前缀主要有三个分别如下: 9150:主要用来走正规量 880:用来走正规量 660:全业务(合法) 已知: 非法业务量主要有:博彩,发票,白银,黄金,期货 合法非正规量有:保健 ...
- 笨办法学Python(三)
习题 3: 数字和数学计算 每一种编程语言都包含处理数字和进行数学计算的方法.不必担心,程序员经常撒谎说他们是多么牛的数学天才,其实他们根本不是.如果他们真是数学天才,他们早就去从事数学相关的行业了, ...
- mysql:数据库保存时间的类型——int和datetime的区别
我们都知道,时间保存在数据库中,可以选择使用两种类型,一种是int,一种是datetime 那么,它们两个有什么区别呢?要怎么用呢? 现在和小仓鼠一起来探讨一下 1.int和datetime的使用区别 ...