webpack-demo

webpack基本使用

第一步:

1.初始化项目
	npm init
   
2.安装依赖包(-D 开发环境 -S 生产环境)
	npm install webpack webpack-cli -D
	
3.创建webpack.config.js配置文件
	"build": "webpack --config webpack.config.js"
	
	配置webpack配置
	
	运行webpack配置,进行打包
	
	npm run build
	
4.配置entry入口文件,output出口文件以及mode打包后的文件格式

5.配置自动html文件的插件
	npm install html-webpack-plugin -D
	
	//引入自动生成html的插件
	const HtmlWebpackPlugin=require('html-webpack-plugin');
	
	new HtmlWebpackPlugin({template:'./public/index.html'})
	
5.2自动删除打包编译后的旧dist文件
	npm install clean-webpack-plugin -D
	
	//引入自动清楚dist的插件
	const {CleanWebpackPlugin}=require('clean-webpack-plugin');
	
	//自动清除dist的插件
	new CleanWebpackPlugin(),
	
	等价于webpack5
	output: {
	    clean: true,
	},
	
	
6.由于webpack只能处理js,json文件,所以需要引入第三方包,打包处理其他文件;webpack
	处理css文件,
	npm install style-loader css-loader -D
	
7.处理less文件,把less文件编译成css文件
	npm install less less-loader -D
	
8.处理scss文件,把scss文件编译成css文件
	npm install sass sass-loader -D
	
9.分离css文件
	npm install mini-css-extract-plugin -D
	
	引入分离 css 文件的模块
	const MiniCssExtractPlugin = require("mini-css-extract-plugin");
	
	//分离css的插件,定义打包好的文件的存放路径和文件名称
	new MiniCssExtractPlugin({filename: './css/bundle.[name].css'})
	
10.处理图片, url-loader 中部分功能要用到file-loader
	npm install url-loader file-loader -D
	
	webpack5 之前我们处理静态资源比如。图片字体之类的资源的时候等,需要用到url-loader,file-loader,raw-loader,
	webpack5则放弃了这三个loader,这三个loader在github上也停止了更新。
	
	webpack5使用四种新增的资源模块(Asset Modules)替代了这些loader的功能。
	
	asset/resource 将资源分割为单独的文件,并导出url,就是之前的 file-loader的功能.
	asset/inline 将资源导出为dataURL(url(data:))的形式,之前的 url-loader的功能.
	asset/source 将资源导出为源码(source code). 之前的 raw-loader 功能.
	asset 自动选择导出为单独文件或者 dataURL形式(默认为8KB). 之前有url-loader设置asset size limit 限制实现
	
11.配置对于高版本js的兼容性处理
	npm install -D babel-loader @babel/core @babel/preset-env
	
12.webpack-dev-server自动刷新
	npm install webpack-dev-server -D
	
13.使用webpack-merge工具对拆分后的webpack.config.js文件进行合并
	npm install webpack-merge -D
	
	拆分webpack.config.js
	--config 存放配置文件的文件夹
	webpack.base.js 公共配置
	webpack.dev.js  开发环境配置
	webpack.pro.js  生产环境配置

第二步:引入一些第三方包

1.引入jquery包
	npm install jquery -S
	
	使用jquery
	const $=require('jquery')

webpack.config.js

// 配置webpack的配置文件,需要将配置的对象导出,给webpack使用
const path=require('path');
//引入自动生成html的插件
const HtmlWebpackPlugin=require('html-webpack-plugin');
//引入自动清楚dist的插件
const {CleanWebpackPlugin}=require('clean-webpack-plugin');
//引入分离 css 文件的模块
const MiniCssExtractPlugin = require("mini-css-extract-plugin");

module.exports={
	//1.入口entry,从那个文件开始打包
	entry:"./src/main.js",
	//2.出口output,打包到哪里去
	output:{
		//打包输出的目录
		path:path.resolve(__dirname,'dist'),
		//打包后生成的文件名
		filename:'js/bundle.[name].js',
	},
	//3.模式mode development 未压缩 production 已压缩
	mode:'development',
	//4.配置module模块加载规则
	module:{
		rules:[
			{
				//正则表达式,匹配所有以.css结尾的文件
				test:/\.css$/,
				//实际处理顺序:从右向左
				//css-loader 让webpack能够识别解析 css 文件
				//style-loader 通过动态的创建style标签的方式(通过js方式),让解析后的css内容,能够作用到页面中
				//MiniCssExtractPlugin.loader 让css样式代码分离开,通过link引入css文件,作用到页面中
				use:[{
					loader: MiniCssExtractPlugin.loader,
					options: {
						publicPath: "../",
					},
				},'css-loader'],
			},
			{
				//正则表达式,匹配所有以.less结尾的文件
				test:/\.less$/,
				use: [{
					loader: MiniCssExtractPlugin.loader,
					options: {
						publicPath: "../",
					},
				}, 'css-loader', 'less-loader'],
			},
			{
				//正则表达式,匹配所有以.scss结尾的文件
				test:/\.scss$/,
				use:[{
					loader: MiniCssExtractPlugin.loader,
					options: {
						publicPath: "../",
					},
				},'css-loader','sass-loader']
			},
			{
				//正则表达式,匹配所有以.jpg|.png|.gif结尾的文件
				test:/\.(png|jpg|gif)$/i,
				type: 'asset/resource',
				generator:{
				    //geneator中是个对象,配置下filename,和output中设置assetModuleFilename一样,将资源打包至imgs文件夹
				    filename:"images/[name].[hash][ext][query]"  //[name]指原来的名字,[hash:6]取哈希的前六位,[ext]指原来的扩展名
				}
			},
			//配置对于高版本js的兼容性处理
			{
			    test: /\.js$/,
				//忽略的文件
			    exclude: /(node_modules|bower_components)/,
			    use: {
			        loader: 'babel-loader',
			        options: {
			          presets: ['@babel/preset-env']
			        }
			    }
			}
		]
	},
	//5.配置插件
	plugins:[
		//自动生成html的插件
		new HtmlWebpackPlugin({template:'./public/index.html'}),
		//自动清除dist的插件
		new CleanWebpackPlugin(),
		//分离css的插件,定义打包好的文件的存放路径和文件名称
		new MiniCssExtractPlugin({filename: './css/bundle.[name].css'})
	],
	//配置开发服务器
	devServer:{
		host:'127.0.0.1',
		port: 9595,
		static: {
			directory: path.join(__dirname, 'public'),
		},
		compress: true,
		open:true,
		proxy:{
			[process.env.VUE_APP_BASE_API]:{
				target:'http://localhost:9595',
				changeOrigin: true,
				pathRewrite: { 
					 ['^' + process.env.VUE_APP_BASE_API]: '',
			    },
			}
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值