webpack的基础使用

一,什么是webpack?

WebPack可以看做是模块打包机:它做的事情是,用来处理前端错综复杂的依赖关系(A里面需要B插件,B里面需要有C插件,而C插件里面又需要有D插件)分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。
webpack的理念就是一切皆模块化,把一堆的css文件和js文件放在一个总的入口文件,通过require引入,剩下的事情webpack会处理,包括所有模块的前后依赖关系,打包、压缩、合并成一个js文件,公共代码抽离成一个js文件、某些自己指定的js单独打包,模块可以是css/js/imsge/font等等。

二,webpack可以处理哪些工作?

  1. webpack可以根据模板生成HTML,并自动处理上面的css/js引用路径
  2. webpack可以自动处理里面的图片路径,css里面背景图的路径,字体引
  3. webpack可以开启本地服务器,一边改写代码,一边自动更新页面内容

三,安装

  1. 首先来到我们的项目目录下,进行项目初始化
npm init -y //项目初始化
  1. 在我们的项目中首先需要安装一个webpack打包工具,执行如下命令
npm i webpack webpack-cli -D //开发环境下

在这里插入图片描述

  1. 安装好打包工具后,别忘了安装我们的依赖
npm i //安装node_moudles

4.来到我们的项目目录下,此时只有一个node_modules,此时需要建立三个文件夹,dist–打包好的目录,public–公用模板,src–源文件目录,(不一定非要叫这三个名字,只是习惯)在这里插入图片描述

四,配置webpack

在我们的src文件夹下,新建一个文件webpack.config.js,这个文件为webpack的配置文件,webpack在构建打包之前会先读取这个配置文件,基于你设定好的配置进行打包在这里插入图片描述

(1)核心概念
  • entry入口:它指定了webpack应该从哪里开始进行打包,进入入口起点后webpack会找出哪些模块和库是入口起点的依赖,这里默认入口文件是src下面的index.js文件在这里插入图片描述

但是你也可以在webpack configuration中配置entry属性,来指定一个或者多个不同的入口起点。例如:

  • webpack.config.js在这里插入图片描述
  • output出口
    output 属性告诉 webpack 在哪里输出它所创建的 bundle,以及如何命名这些文件。主要输出文件的默认值是 ./dist/main.js,其他生成文件默认放置在 ./dist 文件夹中。你可以通过在配置中指定一个 output 字段,来配置这些处理过程:
  • webpack.config.js
module.exports = {
    
    
	entry:'./src/index.js', //入口
	output:{
    
     //出口
		filename:"main.js",//文件名
		path:__dirname+'/dist' //文件夹  __dirname 当前目录
	},
	mode:"production",//模式:开发模式 production产品模式
	plugins:[
		// 实例化插件,指定template模板的位置
		new HtmlWebpackPlugin({
    
    
			template:'./public/index.html'
		})
	],
	}

模式mode

通过选择 development, production 或 none 之中的一个,来设置 mode 参数,你可以启用 webpack 内置在相应环境下的优化。其默认值为 production。

mode 节点的可选值有两个,分别是:

development:

  • 开发环境、
  • 不会对打包生成的文件进行代码压缩和性能优化、打包速度快,
  • 适合在开发阶段使用

production

  • 生产环境
  • 会对打包生成的文件进行代码压缩和性能优化
  • 打包速度很慢,仅适合在项目发布阶段使用

1.在webpack.config.js文件中配置
在这里插入图片描述
2.在pack.json文件中的scripts节点下,新增服务器
在这里插入图片描述
3.在终端运行npm run serve命令,启动webpack进行项目的打包构建

(3)loader

在实际开发过程中,webpack 默认只能打包处理以 .js 后缀名结尾的模块。其他非 .js 后缀名结尾的模块,webpack 默认处理不了,需要调用 loader 加载器才可以正常打包,否则会报错!

  • loader加载器作用:协助 webpack 打包处理特定的文件模块。
3.1 css处理器

css-loader 分析css关系-合并一个css(import)
作用:css-loader处理 .css 文件 style-loader把css加载 到style 标签内

  • 安装
    运行如下的命令,即可在项目中安装此插件
npm i css-loader strle-loader -D
  • 配置
    在webpack.config.js写以下代码:
	module:{
    
    
		rules:[
			// 当文件名test通过,使用如下插件
			{
    
    test:/\.css$/,use:["style-loader","css-loader"]},
			
			{
    
    test:/\.(png|jpg|jpeg|webp|ico|gif|bmp)$/,
			use:[{
    
    
				loader:"url-loader",
				options:{
    
    limit:5000,name:'images/[hash].[ext]'}
			}],
			}
		]
	},

在这里插入图片描述

3.1 图片与文件处理

file-loader可以解析项目中的url引入(不仅限于css)使之指向正确的文件

url-loader 会将小图片生成base64编码格式(url-loader封装了file-loader)

image-webpack-loader 插件可将大的图片进行压缩从而缩小打包体积

html-loader html 代码里处理 img 标签的 loader。

  • 安装:运行如下命令,既可在项目中安装此插件
npm i file-loader url-loader

在这里插入图片描述

  • 配置
    在webpack.config.js写以下代码
module.exports = {
    
    
	entry:'./src/index.js', //入口
	output:{
    
     //出口
		filename:"main.js",//文件名
		path:__dirname+'/dist' //文件夹  __dirname 当前目录
	},
	mode:"production",//模式:开发模式 production产品模式
	plugins:[
		// 实例化插件,指定template模板的位置
		new HtmlWebpackPlugin({
    
    
			template:'./public/index.html'
		})
	],
	module:{
    
    
		rules:[
			// 当文件名test通过,使用如下插件
			{
    
    test:/\.css$/,use:["style-loader","css-loader"]},
			
			{
    
    test:/\.(png|jpg|jpeg|webp|ico|gif|bmp)$/,
			use:[{
    
    
				loader:"url-loader",
				options:{
    
    limit:5000,name:'images/[hash].[ext]'}
			}],
			}
		]
	},
	// 需要提前安装 npm i  webpack-dev-server -D
	devServer:{
    
    
		port:8080,
		hot:true, //更新
		host:"localhost",//域名
		open:true,//默认自动打开浏览器
		proxy:{
    
    } //vue.config.js 代理一致
	}
}

在这里插入图片描述

案例
  • 图片处理
    在index.js文件中在这里插入图片描述
  • 然后我们运行项目npm run build
    在这里插入图片描述
    注意:不需要再次配置
  • 导入css
    在这里插入图片描述
六,webpack-dev-server

webpack-dev-server可以让 webpack 监听项目源代码的变化,从而进行自动打包构建。

  • 安装
    运行如下命令,即可在项目中安装此插件
npm i webpack -dev-server -D

在这里插入图片描述

  • 配置webpack.config.js
    在 webpack.config.js 配置文件中,可以通过 devServer 节点对 webpack-dev-server 插件进行更多的配置,示例代码如下:
module.exports={
    
    
	devServer:{
    
    
		port:8080,
		hot:true, //更新
		host:"localhost",//域名
		open:true,//默认自动打开浏览器
		proxy:{
    
    } //vue.config.js 代理一致
	}
  • 修改package.json
    修改 package.json -> scripts 中的 serve 命令如下:在这里插入图片描述
    运行 npm run build 命令,重新进行项目的打包然后就可以npm run serve 运行项目,会自动跳转到浏览器,查看自动打包效果

猜你喜欢

转载自blog.csdn.net/m0_68907098/article/details/127991155
今日推荐