webpack4.+的使用(二)(css、less、file-loader的使用)

本文详细介绍了如何使用Webpack4+来处理CSS、LESS样式表以及图片文件,通过具体步骤和代码示例,展示了css-loader、less-loader和url-loader的配置与应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

webpack4.+的使用(二)(css、less、file-loader的使用)

一、css-loader的基本使用

1、进入项目目录,下载webpack,在cmd中输入npm i webpack -g下载webpack开发依赖,并在cmd中输入npm init --yes初始化package.json。

2、进入项目目录,在cmd中输入npm i css-loader style-loader -D下载处理样式时需要的loader,如下图:
在这里插入图片描述

3、创建entry.js、index.html、index.css、webpack.config.js文件,文件中的内容如下所示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>复习webpack</title>
	</head>
	<body>
        <!--index.html-->
		<script src="./bundle.js"></script>
	</body>
</html>

/*index.css*/
body{
	background: skyblue;//设置背景为天蓝色
}
//entry.js
import './index.css' //引用index.css
document.write("Hello! It's Review Project!");//entry.js
//webpack.config.js
module.exports = {
	//入口
	entry:{
		"entry":"./entry.js"
	},
	//出口
	output:{
		filename:"./bundle.js"
	},
	module:{
		rules:[
			{	
                //这里配置的是css-loader
				test:/\.css$/,// 正则表达式,指明要处理的文件类型
				use:['style-loader','css-loader']// 处理资源所使用的loader, 处理顺序为从右向左
			}
		]
	}
};

4、使用webpack命令webpack entry.js -o bundle.js重新编译项目,编译成功后,运行index.html,可看到页面背景色为天蓝色,如下图:
在这里插入图片描述
在这里插入图片描述

二、url-loader的基本使用

1、对文件的处理,webpack需要url-loaderfile-loader,在cmd中输入npm i url-loader file-loader -D下载处理图片文件的loader。

2、在index.html、entry.js、webpack.config.js中分别新增如下代码,并在当前目录中存放一张k.jpg的图片,如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>复习webpack</title>
	</head>
	<body>
		<div id="app"></div><!--新增的div-->
		<script src="./bundle.js"></script>
	</body>
</html>

import './index.css'
import imgSrc from './k.jpg'//引入当前目录的图片
import Vue from './vue.js';//引入当前目录的vue.js
document.write("Hello! It's Review Project!");
new Vue({
	el:'#app',
	template:'<div><img :src="imgSrc"/></div>',//vue模板的用法之一
	data(){
		return{
			imgSrc:imgSrc//返回当前的url,这样上面的模板才能直接调用
		}
	}
});
module.exports = {
	//入口
	entry:{
		"entry":"./entry.js"
	},
	//出口
	output:{
		filename:"./bundle.js"
	},
	module:{
		rules:[
			{
				test:/\.css$/,// 正则表达式,指明要处理的文件类型
				use:['style-loader','css-loader']// 处理资源所使用的loader, 处理顺序为从右向左
			},
			{
				test:/\.(jpg|png|jpeg|gif|svg)$/,//处理图片新增的代码
				loader:'url-loader'
			}
		]
	}
};

3、此时的目录结构如下图:
在这里插入图片描述
4、使用webpack命令webpack entry.js -o bundle.js重新编译项目,编译成功后,运行index.html,图片显示在了页面上(图片后面有天蓝色,是因为上面没有去掉body的颜色),如下图:
在这里插入图片描述

三、less-loader的基本使用

1、在cmd中输入命令npm i less less-loader -D下载处理.less文件的loader。

2、新增一个index.less文件,修改entry.js、webpack.config.js文件,如下:

//webpack.config.js文件
module.exports = {
	//入口
	entry:{
		"entry":"./entry.js"
	},
	//出口
	output:{
		filename:"./bundle.js"
	},
	module:{
		rules:[
			{
				test:/\.css$/,// 正则表达式,指明要处理的文件类型
				use:['style-loader','css-loader']// 处理资源所使用的loader, 处理顺序为从右向左
			},
			{
				test:/\.(jpg|png|jpeg|gif|svg)$/,//处理图片新增的
				loader:'url-loader'
			},
			{
				test:/\.less$/,
				loader:'style-loader!css-loader!less-loader'//处理.less文件新增的
			}
		]
	}
};
//entry.js  删除上面两步中的内容。只引入.less文件即可
import './index.less'
//新增.less文件,进行图片的导入
@imgPath:'./k.jpg';
body{
	background-image:url(@imgPath); 
}

3、使用webpack命令webpack entry.js -o bundle.js重新编译项目,编译成功后,运行index.html,图片显示在了页面上,如下图:
在这里插入图片描述

npm ls loader-utils webpack my-project1@0.1.0 D:\svw3\mbv-vw-applet +-- @dcloudio/uni-quickapp-native@2.0.0-alpha-33020211130001 | +-- @hap-toolkit/dsl-vue@0.6.13 | | +-- @hap-toolkit/compiler@0.6.15 | | | +-- loader-utils@1.4.0 deduped | | | `-- webpack@4.47.0 deduped | | +-- css-loader@2.1.1 | | | `-- loader-utils@1.4.0 deduped | | `-- mini-css-extract-plugin@0.5.0 | | `-- loader-utils@1.4.0 deduped | `-- @hap-toolkit/packager@0.6.13 | +-- loader-utils@1.4.0 deduped | `-- webpack@4.47.0 deduped +-- @dcloudio/vue-cli-plugin-uni@2.0.0-alpha-33020211130001 | +-- copy-webpack-plugin@5.1.2 | | `-- loader-utils@1.4.0 deduped | +-- loader-utils@1.4.0 deduped | `-- wrap-loader@0.2.0 | `-- loader-utils@1.4.0 deduped +-- @vue/cli-plugin-babel@4.5.19 | +-- babel-loader@8.4.1 | | `-- loader-utils@2.0.4 | +-- cache-loader@4.1.0 | | `-- loader-utils@1.4.0 deduped | +-- thread-loader@2.1.3 | | `-- loader-utils@1.4.0 deduped | `-- webpack@4.47.0 deduped +-- @vue/cli-plugin-typescript@4.5.19 | +-- ts-loader@6.2.2 | | `-- loader-utils@1.4.0 deduped | `-- webpack@4.47.0 deduped +-- @vue/cli-service@4.5.19 | +-- css-loader@3.6.0 | | `-- loader-utils@1.4.0 deduped | +-- file-loader@4.3.0 | | `-- loader-utils@1.4.0 deduped | +-- html-webpack-plugin@3.2.0 | | `-- loader-utils@0.2.17 | +-- mini-css-extract-plugin@0.9.0 | | `-- loader-utils@1.4.0 deduped | +-- url-loader@2.3.0 | | `-- loader-utils@1.4.0 deduped | +-- vue-loader@15.11.1 | | `-- loader-utils@1.4.0 deduped | +-- vue-loader-v16@npm:vue-loader@16.8.3 | | `-- loader-utils@2.0.4 | +-- vue-style-loader@4.1.3 | | `-- loader-utils@1.4.0 deduped | `-- webpack@4.47.0 deduped +-- css-loader@5.2.7 | `-- loader-utils@2.0.4 +-- file-loader@6.2.0 | `-- loader-utils@2.0.4 +-- less-loader@7.3.0 | `-- loader-utils@2.0.4 +-- loader-utils@1.4.0 +-- mini-css-extract-plugin@1.6.2 | `-- loader-utils@2.0.4 +-- postcss-loader@3.0.0 | `-- loader-utils@1.4.0 deduped +-- sass-loader@8.0.2 | `-- loader-utils@1.4.0 deduped +-- style-loader@1.3.0 | `-- loader-utils@2.0.4 +-- ts-loader@8.2.0 | `-- loader-utils@2.0.4 +-- webpack@4.47.0 | `-- loader-utils@1.4.0 deduped `-- webpack-cli@3.3.12 `-- loader-utils@1.4.0 deduped
06-28
npm ls loader-utils less-loader webpack webpack-cli my-project1@0.1.0 D:\svw3\mbv-vw-applet +-- @dcloudio/uni-quickapp-native@2.0.0-alpha-33020211130001 | +-- @hap-toolkit/dsl-vue@0.6.13 | | +-- @hap-toolkit/compiler@0.6.15 | | | +-- loader-utils@1.4.0 deduped | | | `-- webpack@4.47.0 deduped | | +-- css-loader@2.1.1 | | | `-- loader-utils@1.4.0 deduped | | `-- mini-css-extract-plugin@0.5.0 | | `-- loader-utils@1.4.0 deduped | `-- @hap-toolkit/packager@0.6.13 | +-- loader-utils@1.4.0 deduped | `-- webpack@4.47.0 deduped +-- @dcloudio/vue-cli-plugin-uni@2.0.0-alpha-33020211130001 | +-- copy-webpack-plugin@5.1.2 | | `-- loader-utils@1.4.0 deduped | +-- loader-utils@1.4.0 deduped | `-- wrap-loader@0.2.0 | `-- loader-utils@1.4.0 deduped +-- @vue/cli-plugin-babel@4.5.19 | +-- babel-loader@8.4.1 | | `-- loader-utils@2.0.4 | +-- cache-loader@4.1.0 | | `-- loader-utils@1.4.0 deduped | +-- thread-loader@2.1.3 | | `-- loader-utils@1.4.0 deduped | `-- webpack@4.47.0 deduped +-- @vue/cli-plugin-typescript@5.0.8 | +-- thread-loader@3.0.4 | | `-- loader-utils@2.0.4 | `-- webpack@5.99.9 +-- @vue/cli-service@4.5.19 | +-- css-loader@3.6.0 | | `-- loader-utils@1.4.0 deduped | +-- file-loader@4.3.0 | | `-- loader-utils@1.4.0 deduped | +-- html-webpack-plugin@3.2.0 | | `-- loader-utils@0.2.17 | +-- mini-css-extract-plugin@0.9.0 | | `-- loader-utils@1.4.0 deduped | +-- url-loader@2.3.0 | | `-- loader-utils@1.4.0 deduped | +-- vue-loader@15.11.1 | | `-- loader-utils@1.4.0 deduped | +-- vue-loader-v16@npm:vue-loader@16.8.3 | | `-- loader-utils@2.0.4 | +-- vue-style-loader@4.1.3 | | `-- loader-utils@1.4.0 deduped | `-- webpack@4.47.0 deduped +-- file-loader@6.2.0 | `-- loader-utils@2.0.4 +-- loader-utils@1.4.0 +-- mini-css-extract-plugin@1.6.2 | `-- loader-utils@2.0.4 +-- postcss-loader@3.0.0 | `-- loader-utils@1.4.0 deduped +-- sass-loader@8.0.2 | `-- loader-utils@1.4.0 deduped +-- style-loader@1.3.0 | `-- loader-utils@2.0.4 +-- ts-loader@8.2.0 | `-- loader-utils@2.0.4 +-- webpack@4.47.0 | `-- loader-utils@1.4.0 deduped `-- webpack-cli@3.3.12 `-- loader-utils@1.4.0 deduped
最新发布
06-28
npm ls loader-utils less-loader webpack webpack-cli my-project1@0.1.0 D:\svw3\mbv-vw-applet +-- @dcloudio/uni-quickapp-native@2.0.0-alpha-33020211130001 | +-- @hap-toolkit/dsl-vue@0.6.13 | | +-- @hap-toolkit/compiler@0.6.15 | | | +-- loader-utils@1.4.0 deduped | | | `-- webpack@4.47.0 deduped | | +-- css-loader@2.1.1 | | | `-- loader-utils@1.4.0 deduped | | `-- mini-css-extract-plugin@0.5.0 | | `-- loader-utils@1.4.0 deduped | `-- @hap-toolkit/packager@0.6.13 | +-- loader-utils@1.4.0 deduped | `-- webpack@4.47.0 deduped +-- @dcloudio/vue-cli-plugin-uni@2.0.0-alpha-33020211130001 | +-- copy-webpack-plugin@5.1.2 | | `-- loader-utils@1.4.0 deduped | +-- loader-utils@1.4.0 deduped | `-- wrap-loader@0.2.0 | `-- loader-utils@1.4.0 deduped +-- @vue/cli-plugin-babel@4.5.19 | +-- babel-loader@8.4.1 | | `-- loader-utils@2.0.4 | +-- cache-loader@4.1.0 | | `-- loader-utils@1.4.0 deduped | +-- thread-loader@2.1.3 | | `-- loader-utils@1.4.0 deduped | `-- webpack@4.47.0 deduped +-- @vue/cli-plugin-typescript@5.0.8 | +-- thread-loader@3.0.4 | | `-- loader-utils@2.0.4 | `-- webpack@5.99.9 +-- @vue/cli-service@4.5.19 | +-- css-loader@3.6.0 | | `-- loader-utils@1.4.0 deduped | +-- file-loader@4.3.0 | | `-- loader-utils@1.4.0 deduped | +-- html-webpack-plugin@3.2.0 | | `-- loader-utils@0.2.17 | +-- mini-css-extract-plugin@0.9.0 | | `-- loader-utils@1.4.0 deduped | +-- url-loader@2.3.0 | | `-- loader-utils@1.4.0 deduped | +-- vue-loader@15.11.1 | | `-- loader-utils@1.4.0 deduped | +-- vue-loader-v16@npm:vue-loader@16.8.3 | | `-- loader-utils@2.0.4 | +-- vue-style-loader@4.1.3 | | `-- loader-utils@1.4.0 deduped | `-- webpack@4.47.0 deduped +-- css-loader@5.2.7 | `-- loader-utils@2.0.4 +-- file-loader@6.2.0 | `-- loader-utils@2.0.4 +-- less-loader@7.3.0 | `-- loader-utils@2.0.4 +-- loader-utils@1.4.0 +-- mini-css-extract-plugin@1.6.2 | `-- loader-utils@2.0.4 +-- postcss-loader@3.0.0 | `-- loader-utils@1.4.0 deduped +-- sass-loader@8.0.2 | `-- loader-utils@1.4.0 deduped +-- style-loader@1.3.0 | `-- loader-utils@2.0.4 +-- ts-loader@8.2.0 | `-- loader-utils@2.0.4 +-- webpack@4.47.0 | `-- loader-utils@1.4.0 deduped `-- webpack-cli@3.3.12 `-- loader-utils@1.4.0 deduped
06-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值