webpack的loader加载器,文件压缩

webpack的loader加载器

源码上传地址:链接: https://pan.baidu.com/s/1ihZuEGL62VcKy79-zE5pHQ 提取码: ique

webpack的loader是个加载器,其实是用来解析文件的。
首先,我在src目录下,先创建一个css文件。

index.css
div{
	background:red;
}

然后将index.css引入到index.js当中

import "./index.css"

这个时候,如果我们执行打包命令,肯定是会报错的,因为webpack里面没有加载器,所以识别不了。
所以,要安装一个解析css的加载器:

css-loader:用来解析css
style-loader:把我们解析的css放在style标签中

执行命令: npm install css-loader style-loader -D

安装完毕后,我们去webpack.config.js进行手动配置加载器。

加载器的配置是在module下进行的:

module:{
	//这里注意,加载顺寻是从上到下加载,所以加载顺序要清楚。
	//一定是先解析css,然后再往style里面放
	//enforce:'post'	pre优先加载, post最后加载,这个参数可以控制加载顺序
	rules:[
		{
			test:/\.css$/i,   //匹配后缀为css的文件
			user:'css-loader'  //用什么加载器
		},
		{
			test:/\.css$/i,   //匹配后缀为css的文件
			user:'style-loader',  //用什么加载器
			enforce:'post'		  //pre优先加载, post最后加载
		},
		
	]
}

这里,还有一种简写方式,可以把它们写在一起, 保持界面的整洁:

rules: [
  {
	test: /\.css$/i,					 //匹配后缀为css的文件
	use: ['style-loader', 'css-loader'], //用什么加载器,这里的加载顺序是从右向左依次加载,所以注意顺序
  },
],

配置完毕后,直接运行之前安装的本地服务或者打包预览,看页面的样式有没有变化即可。
我这里可直接运行本地服务,如没有本地服务,可以查看上篇文章。
执行命令: npm run devServer
在这里插入图片描述
图片上可以看到css样式已经起作用了。
还有几种比较常见的css预处理器:

解析less: less less-loader

通过命令安装: npm install less less-loader -D

src目录下,创建less文件

@color:'blue'
div{
	color:@color
}

在index.js引入
需要的插件包已经安装完成,只需要在webpack.config.js下面的module进行如下配置即可:

		  {
			test: /\.less$/i,
			use: ['style-loader', 'css-loader','less-loader'],
		  },

因为配置的是css,所以一定要加载全。
进行预览即可
这里有一个发散的点,就是,如果在css文件里面引入less的文件,或者其他文件,就需要重新配置一下css的预加载器。
注:因我们的最先的流程都是通过js引入的,下面看如果现在css 引入该怎么配置。

		  {
			test: /\.css$/i,
			use: ['style-loader', {
				loader:"css-loader",
				options:{
					importLoaders:1			//用后面的1个加载器来解析
				}
			},'less-loader'
			],
		  },

解析sass: node-sass sass-loader
解析stylus stylus stylus-loader

额外扩展css处理:
如果我们的样式,里面用到了css3的语法,我们就不得不考虑浏览器的兼容问题。
因此,我们就要处理一下css私有前缀问题。
postcss-loader  借助插件样式处理工具  
autoprefixer:处理私有前缀的插件

通过命令安装: npm install postcss-loader autoprefixer -D

安装成功以后,会调用postcss.config.js这个js
没有这个文件,就需要我们在src目录下新建一下。

postcss.config.js    这个文件里可以定义css私有前缀的一些插件

module.exports={ //设置处理样式的配置文件。
	plugin:[
		require:('autoprefixer')
	]
}

同时webpack.config.js  需要更改下rules里面对于css预处理器的配置
	{
				test: /\.css$/i,
				use: ['style-loader', {
					loader:"css-loader",
					options:{
						importLoaders:2			//用后面的2个加载器来解析
					}
				},'postcss-loader','less-loader'//css处理需要postcss-loader处理一下,添加一个私有前缀
				],
	},
	

这个时候先不要着急打包,为了兼容更多浏览器,我们还需要一个配置
首先 根目录下新建一个文件: .browserslistrc

//	.browserslistrc
	cover 99.5%				//覆盖99.5%的浏览,这样才会兼容大多数浏览器。
然后再次执行打包命令
npm run dev

这个时候私有前缀就添加成功了。不过这个时候打包后的css和js是再一起。
要分离css还需要一个插件。
mini-css-extract-plugin
通过命令安装一下:

	npm install mini-css-extract-plugin -D	
	webpack.config.js文件下引入:
	const MiniCssExtractPlugin = require("mini-css-extract-plugin");

同时再 pligins 下设置:


	new MiniCssExtractPlugin({		//需要设置分离出来的css的位置
		filename:"css/main.css"		//分离出来存放的目录
	}),

紧接着我们还要设置一下module,如下:

	{
				test: /\.css$/i,
				use: [ 
				{
					loader:MiniCssExtractPlugin.loader		//分离css以后,就会通过外链的方式引入页面,所以之前的'style-loader'就不需要了。
				},
				{
					loader:"css-loader",
					options:{
						importLoaders:2			//用后面的2个加载器来解析
					}
				},'postcss-loader','less-loader' //css处理需要postcss-loader处理一下,添加一个私有前缀
				],
	}
这个时候,执行打包命令 就可以看到。dist目录下,分离成功了。


至此,我们的css和js打包分离就成功了。但是我们的项目一般上线之前,都是需要压缩的。
这也是webpack的主要作用,下面来看如何进行代码的压缩。

这个时候,我们直接通过打包命令:npm run build  
打包到生产环境,其实是可以打包的。但是,只能打包js ,css是没有被压缩的。
所以压缩css我们还需要引入一个插件:
	npm install optimize-css-assets-webpack-plugin -D   

webpack.config.js 引入

const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');//压缩css

同时module.exports下面新建一个属性:
optimization:{		
	minimizer:[			//放压缩的css,或者js
		new OptimizeCssAssetsPlugin()
	]
}

然后我们执行命令打包:npm run build 

我们会发现。css压缩成功,但是js反而不压缩了。这是因为js有一个它自定的覆盖压缩插件:terser-webpack-plugin
下面我们来安装一下:
	npm install terser-webpack-plugin   //(这里注意压缩的插件是放在生产环境下的。所以命令后面不要加-D)

因此我们同样需要配置一下:webpack.config.js

先引入:

	const TerserPlugin = require('terser-webpack-plugin');//压缩js
	
	同样再optimization属性配置里,调用下方法就可以了。
	optimization:{
		minimizer:[			//放压缩的css,或者js
			new OptimizeCssAssetsPlugin(),
			new TerserPlugin()
		]
	}

执行打包命令:npm run build
打包成功以后就可以看到我们的css和js都被压缩了。

css压缩后效果
js压缩后效果

源码地址:链接: https://pan.baidu.com/s/1ihZuEGL62VcKy79-zE5pHQ 提取码: ique

发布了38 篇原创文章 · 获赞 24 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_39162041/article/details/104444269