利用webpack打包其它资源文件
文章目录
- 打包sass文件
- 项目结构
- 修改源码
- 运行结果
- 打包less文件
- 修改源码
- 运行结果
- 打包url中的资源
- 修改源码
- 运行结果
webpack
除了能够打包css
资源文件外,其还可以打包众多的其它类型的文件。
这里为了减少重复代码的编写,所以说此处是在上一篇文章中代码的基础上所做的修改,上一篇文章的地址如下:
- 利用webpack中的loader来打包css文件
打包sass文件
webpack
中使用sass-loader
,css-loader
,style-loader
来处理.scss
文件的打包工作。而其中的sass-loader
又依赖于node-sass
,所以说我们还要添加node-sass
依赖。
项目结构
修改源码
site1.scss
文件
在css
文件夹中添加site1.scss
文件,其源码如下:
$color:blue;
#v2{
border:1px solid $color;
}
main.js
文件
在main.js
文件文件中添加site1.scss
资源文件的引入。
require('../assets/css/site1.scss');
webpack.config.js
文件
在webpack.config.js
文件中的loaders
关键字下添加下面代码:
,{
test:/\.scss$/
,loader:'style-loader!css-loader!sass-loader'
}
package.json
文件
将控制台的光标定位于项目根目录,在其中输入下述指令,将其中的依赖添加到package.json
文件中。
cnpm i node-sass sass-loader css-loader style-loader --save-dev
运行结果
在控制台中输入下述指令,打开浏览器,即能访问打包后的结果。
如上图所示,第二个文本框成功的变成了蓝色,这说明我们的sass
打包正确。
打包less文件
webpack
打包less
文件所需要的依赖包为css-loader
、style-loader
、less-loader
,其中less
为less-loader
所需要的依赖包。
修改源码
site2.less
文件:
在site2.less
中添加如下源码,同时将所有文本框的边框宽度变为2px
@color:green;
#res{
border:2px solid @color;
}
main.js
文件:
在main.js
中添加源码:
require('../assets/css/site2.less');
webpack.config.js
文件:
在webpack.config.js
中的loaders
关键字下添加源码:
,{
test:/\.less/ //打包.less文件
,loader:'style-loader!css-loader!sass-loader!less-loader'
}
package.json
文件
将控制台的光标定位于项目根目录下,执行下面指令将css-loader
、style-loader
、less-loader
以及less
依赖包打入到package.json
文件中。
cnpm i less less-loader style-loader css-loader --save-dev
运行结果
在控制台中执行下列命令:
cnpm i
webpack
其展示结果为:
打包url中的资源
webpack
打包url
网络资源所需要的依赖包为url-loader
、file-loader
。
修改源码
site.css
源码:
在该文件中添加下述代码,同时在相应目录中添加图片文件。
#bg{
width: 200px;
height: 200px;
background-image: url("../imgs/png/e6.png");
}
index.html
源码:
在该文件中添加下述代码:
<hr>
<div id="bg"></div>
package.json
源码:
将控制台中的光标定位于项目根目录中,执行下述命令行指令将url-loader
、file-loader
添加到package.json
中
npm i url-loader file-loader --save-dev
由于依赖包版本的不一致性,这导致有的版本的依赖包不能够正常运行,所以在这里更新一下完整源码:
{
"name": "csspackage",
"version": "1.0.0",
"description": "",
"main": "webpack.config.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"css-loader": "^1.0.1",
"file-loader": "^0.11.1",
"less": "^3.8.1",
"less-loader": "^4.1.0",
"node-sass": "^4.10.0",
"sass-loader": "^7.1.0",
"style-loader": "^0.23.1",
"url-loader": "^0.5.8"
}
}
webpack.config.js
源码:
在该文件的loaders
关键字下添加下述代码:
,{
test:/\.(png|jpg|gif|ttf)$/ //打包url请求的资源文件
,loader:'url-loader?limit=20000' //limit表示图片的大小为40k是临界值,小于20k的图片均被
// 打包到build.js中去,此时图片的显示就会很快,这是一个优化操作。
}
运行结果
由上图可知,我们打包的url
图片资源已经可以正常显示了,由于该图片资源小于20k,因而其图片资源被以base64
位字节码的形式打到了build.js
中,其可以加快图片在页面的展示速度。
还没有评论,来说两句吧...