1.软文推荐

2.软文推荐

3.软文推荐

简单了解了几个常用的插件,一般适合用于任何类型的项目,不管是否使用了框架。webpack为每个工作环节都预留了合适的钩子,扩展时只需要找到合适的时机去做合适的事情。

写在前面

webpack插件机制的目的是:为了增强webpack在项目自动化构建方面的能力。插件最常见的应用场景是:

实现自动在打包之前清除dist目录(上次打包的结果)

自动生成应用所需的html文件

根据不同环境为代码注入类似API地址这种可能变化的部分

拷贝不需要参与打包的资源文件到输出目录

压缩webpack打包完成后输出的文件

自动发布打包结果到服务器实现自动部署

插件机制

webpack每次打包的结果都是直接覆盖到dist目录,打包前,dist目录中可能已经存在上一次打包操作时遗留的文件,再次打包时,只能覆盖掉同名文件,已经移除的资源文件会一直累积在里面,最终导致部署上线时出现多余文件。很明显这是不合理的。

更好的做法当然是:在每次完整打包浅,自动明清理dist目录,每次打包过后,dist目录中就只会存在那些必要的文件。我们可以依赖第三方npm包:clean-webpack-plugin。安装后回到webpack的配置文件中,导入clean-webpack-plugin插件,该插件模块导出CleanWebpackPlugin。

//webpack.config.js
const path = require("path")
const {CleanWebpackPlugin} = require("clean-webpack-plugin")
module.exports = {
 entry:"./src/index.js",
 output:{
   filename:"bundle.js",
 },
 mode:"none",
 plugins:[
   new CleanWebpackPlugin()
 ]
}
// src/index.js
console.log("nihao nihao");

打包压缩后的代码:

/******/ (() => { // webpackBootstrap
var __webpack_exports__ = {};
console.log("nihao nihao");
/******/ })()
;      

我们知道html文件一般都是通过硬编码的方式,单独存放在项目的根目录下,这种方式有两个问题:

项目发布时,我们需要同时发布根目录下的html文件和dist目录中所有打包的打包结果,非常麻烦,而且上线后还要确保html代码中的资源文件正确

如果打包结果输出的目录或文件名发生变化,那么html代码中对应的script标签需要我们手动修改路径

为此webpack也有相关的插件自动生成html,相对于之前写死html文件的方式,自动生成html的优势在于:

html也输出到dist目录中,上线时只需要把dist目录发布出去

html中的script标签是自动引入的,所以可以确保资源文件的路径是正常的

安装后回到配置文件,载入此模块,相对于clean-webpack-plugin需要解构内部成员所不同,html-webpack-olugin插件默认导出的就是插件类型。

对于生成的html文件,页面的title需要修改,许多时候还需要我们自定义页面的一些meta标签和基础dom结构。

const path = require("path")
const {CleanWebpackPlugin} = require("clean-webpack-plugin")
const HtmlWebpackPlugin = require("html-webpack-plugin")
module.exports = {
 entry:"./src/index.js",
 output:{
   filename:"bundle.js",
 },
 mode:"none",
 plugins:[
   new CleanWebpackPlugin(),
   new HtmlWebpackPlugin({
     title:"hello webpack",
     template:"./src/index.html"
   })
 ]
}

指定要打包的html文件:

html-webpack-olugin除了可以自定义输出文件内容,同时还可以输出多个html文件,通过HtmlWebpackPlugin创建的对象是用于生成index.html文件的,玩去哪可以再创建一个新的实例对象,用于创建额外的html文件。

对于项目中一些不需要参与构建的静态文件如:网站的favicon、robots.txt文件等,但是需要发布在线上。那么可以将这类文件统一放在根目录下的public或static目录中,希望webpack在打包时一并将这个目录下所有的文件复制到输出目录,这种需求可以使用copy-webpack-plugin插件的实现。

plugins:[
 new CleanWebpackPlugin(),
 new HtmlWebpackPlugin({
   title:"hello webpack",
   template:"./src/index.html"
 }),
 new CopyWebpackPlugin([
   "public"//需要拷贝的目录或者路径
 ])
]
参考文章

《webpack原理与实践》 《webpack中文文档》

本文来源:www.lxlinux.net/9672.html,若引用不当,请联系修改。

相关文章 8

2

如何快速排查Linux硬件问题 4分钟前

Linux系统中排查硬件问题一项非常困难的使用,在Linux系统中可能会有很多因素导致硬件问题,在本篇文章重点为大家分享一下Linux中快速排...

3

求韩国vps介绍(韩国和日本VPS) 5分钟前

目录:1、vps韩国uplus线路好吗2、韩国vps多少钱一年3、韩国vps服务器哪家好4、韩国VPS租用优势与缺陷是啥?5、哪里的韩国vps比较好,要速度...

4

Linux下查询网关具体实现方法 8分钟前

相信不少学习网络的朋友,经常会听到网关这一词, 网关英文名称为Gateway,又称网间连接器、协议转换器。网关在网络层以上实现网络互连...

5

Linux系统完全删除用户 10分钟前

Linux系统是一个多用户系统,那么如果完全删除一个用户呢?下面给良许教程网为大家分享一下Linux系统完全删除用户具体方法,有需要的小...

6

优化关键词排名就属(关键词优化哪家强) 13分钟前

目录:1、关键词怎么优化排名2、关键词排名优化3、优化网站关键词排名关键词怎么优化排名 通过搜索引擎来调整。 让搜索引擎给网站带来...

7

Linux常用命令—resize命令 15分钟前

Linux常用命令 resize命令 命令设置终端机视窗的大小。执行resize指令可设置虚拟终端机的视窗大小,下面良许教程网为大家分享一下Linux常用...

8

腾讯云首单特惠(腾讯云无门槛优惠券) 16分钟前

目录:1、腾讯云轻量应用服务器专场活动,1核2G6M低至74元/年起!2、腾讯云免费体验一个月之后还有新人活动吗3、腾讯云怎么买便宜腾讯云轻...