走近webpack(2)--css打包及压缩js
前面的文章介绍了webpack的devServer以及多入口多出口文件的配置,咱们继续往下学。
在开始学习接下来的知识之前,我们先回顾一下,前文提到了webpack的简单配置方法,但是只详细说了下入口和出口文件的配置,并没有更多的去解释其他选项的配置,比如loader,plugin等。那么咱们现在就来学一下module的配置。前面说过,module的主要作用就是通过loaders来配置,解析,转换不同类型的模块。比如说,可以把less,sass转换成css,可以把es6甚至es7语法转换成大部分浏览器可以运行的js代码。所有的loaders都需要在npm中单独安装并且在module中配置后才可以使用。loader的主要配置只有test和use两种,简单来说就是。你要匹配的文件是什么,用test来过滤。用use来确定你要用什么loader来转换你匹配到的文件。下面咱们开始第一个loader的使用。
首先我们来安装两个loader,css-loader和style-loader。运行如下代码:
npm install style-loader css-loader --save-dev
其中,style-loader主要用于将css插入到页面的style标签中等。css-loader主要用于处理css中的url()。
然后我们查看package.json中的devDependecies中多了两个配置项,也就是我们安装的css-loader和style-loader说明安装成功。

然后,我们在src文件夹下新建一个css文件夹,并且新建一个index.css文件。
此时,你的文件目录结构应该是这样的:

在文件中我们写上如下的代码。
body{
background:red;
}
#title{
background:orange;
color:blue;
}
只是这样还不行,我们需要在src/entry.js中引入这个css文件,代码如下:
import idxcss from './css/index.css'
最后一步,也是最重要的一步,我们在webpack.config.js中的module中配置一下我们已经安装好的loader:
module:{
rules: [
{
test: /\.css$/,
use: [ 'style-loader', 'css-loader' ]
}
]
},
然后,让我们npm run build一下!打开index.html,我们发现css已经被写入了。
下面我们介绍一下loader的其他几种写法,意思都一样,你们喜欢哪个用哪个。
/*第一种写法*/
module:{
rules:[
{
test:/\.css$/,
use:['style-loader','css-loader']
}
]
}
/*第二种写法*/
module:{
rules:[
{
test:/\.css$/,
loader:['style-loader','css-loader']
}
]
}
/*第三种写法*/
module:{
rules:[
{
test:/\.css$/,
use: [
{
loader: "style-loader"
}, {
loader: "css-loader"
}
]
}
]
}
ok,下面我们来学一下如何压缩JS,我们需要用到uglifyjs-webpack-plugin,一个压缩JS的插件,没错,插件,plugins。那么看一下我们如何使用他呢。
uglifyjs-webpack-plugin已经集成在webpack中,所以我们不用下载安装了,直接在config.js中引入:
const uglify = require('uglifyjs-webpack-plugin');
然后在module的plugin选项下new一个uglify就可以了。

下面我们npm run build一下就打包成功了。JS压缩通常都是用在生产环境中的。下面来看看html文件是如何打包的。
先把dist目录下的index.html复制到src目录下,然后把dist目录下的文件都删除。
html文件的打包需要用到另一个插件,html-webpack-plugin。我们先安装一下吧:
npm install --save-dev html-webpack-plugin
安装完成之后,我们需要引入这个插件,所有的插件使用都是这三步,安装(除了webpack集成的可以省去安装这一步),引入,配置。

然后,我们需要在plugins下配置一下这个插件。代码如下:
new htmlPlugin({
/*压缩文件,removeAttributeQuotes指去掉属性的双引号,目前你随便不用也行*/
minify:{
removeAttributeQuotes:true
},
/*加入hash值,为了避免浏览器缓存js*/
hash:true,
/*要打包的html文件的路径及名称*/
template:'./src/index.html'
})
配置完成,npm run build一下会发现dist目录下已经生成了三个文件。至此我们就学会了打包css,压缩js和打包生成html文件。如果稍微细心一点你会发现,其实webpack主要的作用就在于loader和plugin,也正是如此,webpack才有了它多样化个性化的配置方法。下一篇文章,我们一起学一下如何用webpack来处理图片。
走近webpack(2)--css打包及压缩js的更多相关文章
- webpack之牛刀小试 打包并压缩html、js
1.创建项目文件夹test,在文件夹下创建src文件夹用来存放源码,在src文件夹下创建index.html/index.js两件文件. 我们的最终目的是将这两个文件打包压缩并输出到/test/dis ...
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能 Scripts.Render和Styles.Render
打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能 (转载)
ASP.NET MVC 4 RC的JS/CSS打包压缩功能 打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载 ...
- (转)ASP.NET MVC 4 RC的JS/CSS打包压缩功能
转自:http://www.cnblogs.com/shanyou/archive/2012/06/22/2558580.html 打包(Bundling)及压缩(Minification)指的是将多 ...
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能
打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...
- 【转】ASP.NET MVC 4 RC的JS/CSS打包压缩功能
原文链接:http://www.cnblogs.com/shanyou/archive/2012/06/22/2558580.html 打包(Bundling)及压缩(Minification)指的是 ...
- webpack学习(六)打包压缩js和css
打包压缩js与css 由于webpack本身集成了UglifyJS插件(webpack.optimize.UglifyJsPlugin)来完成对JS与CSS的压缩混淆,无需引用额外的插件, 其命令we ...
- webpack入门之打包html,css,js,img(一)
webpack到底是什么,网上一大堆介绍的东西,越看越不知道说的什么,所以今天打算自己来记录一下这段时间学习webpack的成果, webpack就是打包文件用的,html,css,js,img,为什 ...
- ASP.NET MVC 4使用Bundle的打包压缩JS/CSS
打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...
随机推荐
- 使用line_profiler查看api接口函数每行代码执行时间
项目情景描述: 在restful架构风格的项目交付测试的过程中,某接口出现 请求超时导致的http 502 Bad Gateway,于是开始排查具体是接口函数中的哪行代码或函数 响应时间过长导致的50 ...
- 前端js,后台python实现RSA非对称加密
先熟悉使用 在后台使用RSA实现秘钥生产,加密,解密; # -*- encoding:utf-8 -*- import base64 from Crypto import Random from Cr ...
- MySQL参数log_bin_trust_function_creators介绍
MySQL的有个参数log_bin_trust_function_creators,官方文档对这个参数的介绍.解释如下所示: log_bin_trust_function_creators Comma ...
- 如何使用DirectDraw直接显示RGB、YUV视频数据(播放yuv)
#include "draw.h"void CTest100Dlg::OnButton1() { // TODO: Add your control notification ha ...
- HighCharts中的无主题的2D折线图
HighCharts中的无主题的2D折线图 1.设计源码 <!DOCTYPE html> <html> <head> <meta charset=" ...
- linux中mysql命令方式备份数据的问题
这几天公司新出了个组件化的项目,里面需要用到mysql数据库相关的技术,由于之前一直用的mongodb,所以mysql几乎忘光了,于是只能在linux虚拟机中重新开始学习. 基本的增删改查还好,但是在 ...
- java.lang.NumberFormatException
1.错误描述 Exception in thread "main" java.lang.NumberFormatException: For input string: " ...
- Openstack_后端存储平台Ceph
框架图 介绍 一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统 特点 CRUSH算法 Crush算法是ceph的两大创新之一,简单来说,ceph摒弃了传统的集中式存储元数据寻址的方案, ...
- 微信小程序hidden
首先hidden默认在display:block;情况下是会默认生效的: but在很多时候只在初始值下有效, 在data下声明 flag:true; 方法中: 无效,所以尽量不要使用hidden这个属 ...
- Html行内元素和块级元素
1.关于行内元素和块状元素的说明 根据CSS规范的规定,每一个网页元素都有一个display属性,用于确定该元素的类型,每一个元素都有默认的display属性值,比如div元素,它的默认display ...