IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> webpack-demo -> 正文阅读

[JavaScript知识库]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]: '',
			    },
			}
		}
	}
}
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-31 23:55:34  更:2022-03-31 23:56:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:17:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码