webpack初学笔记

学习链接: https://www.bilibili.com/video/BV1YU4y1g745
还没看完呢。

安装

一般不适用全局安装

//先安装个npm包管理配置文件
npm init -y

↑ 运行完毕后,会出现package.json文件

//在对webpack进行项目局部安装
npx webpack webpack-cli --save-dev

打包?

在需要打包的文件夹路径下输入:

npx webpack

随后会出现 /dist 文件,该文件下会出现默认打包文件main.js

配置

在命令行中设置配置太不方便啦,所以!
在项目根目录下创建一个配置文件webpack.config.js

//webpack.config.js
const path = require("path");

module.exports = {
  entry: "./src/index.js", //入口文件
  output: {
    filename: "bundle.js", //指定输出名
    path: path.resolve(__dirname, "./dist"), //输出路径-需要设置成绝对路径 
     //path.resolve(__dirname)指向 当前所在的物理路径
  },
  mode: "none",
};

随后进行一个打包的动作即可。

使用

<!-- index.html -->
……
<script src="./dist/bundle.js"></script>
……

使用插件

//webpack.config.js
//声明常量
const HtmlWebpackPlugin = reguire("html-webpack-plugin");

module.exports = {
……
//插件声明
plugins:[
new HtmlWebpackPlugin(),
]

……
}

html-webpack-plugin

使用该插件进行打包,会自动在html导入js文件(添加script标签)

npm install html-webpack-plugin -D

-。-在根目录下进行安装

  • 配置
……
plugins: [
    new HtmlWebpackPlugin({
      template: "./index.html",//以该文件为基础模板
      filename: "app.html",//生成的文件名
      inject: "body",//script标签位于body中
    }),
  ],
  ……

每次打包后对上一次打包的文件进行清理,仅需在output中添加clean:true即可

inline-source-map

解决:在js文件中出现错误,能够直观显示出错行数

//webpack.config.js
……
mode:"development",//设置为开发者模式,js文件便于查看
devtool:"inline-source-map",
……

webpack-dev-server

就Live Server的效果。

npm install webpack-dev-server -D

-。-在根目录下进行安装

//webpack.config.js
module.exports = { 
……
devServer:{
	static:"./dist",//根目录
},
}

mini-css-extract-plugin

用于抽离css。
建议先瞟一眼loader,再看以下代码。

npm install mini-css-extract-plugin -D
//webpack.config.js
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports={
	……
	module:{
		plugins:[
			new MiniCssExtractPlugin({
	    	  filename: "styles/[contenthash].css",
	      	}),
	    ],
		rules:[
			{
			test:'/\.css$/,
			use:[MiniCssExtractPlugin.loader,"css-loader"];
			}
		]
	}
}

css-minimizer-webpack-plugin

用于压缩css。

npm install css-minimizer-webpack-plugin -D
//webpack.config.js
const CssMinimizerPlugin - require('css-minimizer-webpack-plugin');
module.exports = {
……
mode:"production",
……
optimization: {
    minimizer: [new CssMinimizerPlugin()],
  },
}

资源

Resource资源

用于发送文件,并导出url。

假设需要打包一张image

//webpack.config.js
module.exports = {
……
output:{
……
//指定图片打包后的路径&&名称①
assetModuleFilename:"images/[contenthash][ext]",
//[contenthash]-根据图片描述生成名称
//[ext]-自动生成扩展名
}
……
	module: {
	    rules: [
	      {
	        test: /\.png$/,
	        type: "asset/resource",//类型
	        //指定图片打包后的路径&&名称②
	        generator: {
         	 filename: "images/test.png",
       		 },
	      },
	    ],
	  },
 }

//注:以上代码块中①②都可以用于指定路径和名称。如果同时存在,则②的优先级比①大。

//index.js
import imgsrc from "./assets/1.png";
const img = doucument.createElement("img");
img.src=imgsrc;
document.body,appendChild(img);

inline资源

用于导出资源的data url。

//webpack.config.js
  rules: [
	      {
	        test: /\.svg$/,
	        type: "asset/inline",//类型
	        }
	 ]

source

用于导出资源的源代码。

//webpack.config.js
  rules: [
	      {
	        test: /\.txt$/,
	        type: "asset/source",//类型
	        }
	 ]

asset通用

自动选择Resource或inline类型。
*默认当资源文件>8k时,选择Resource生成一个文件,否则只生成一个data url。

如何设置选择类型的临界值?

//webpack.config.js
 {
        test: /\.jpg$/,
        type: "asset",
        parser: {
          dataUrlCondition: {
            maxSize: 4 * 1024 * 1024,//将临界值设置为4M
          },
        },
  },

loader

用于对模块的源代码进行转换。(css、字体、图像、xml……

安装:

npm install style-loader -D
npm install css-loader -D

使用:

//webpack.config.js
module.exports={
……
	module:{
		rules:[
			{
			test:/\.(css|less)$/,
			use:['style-loader','css-loader','less-loader'],//加载顺序:从后往前
			}
		]
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值