Vue

webpack插件之webpack-dev-serve和html-webpack-plugin

05-19 09:10

webpack中的插件

通过安装和配置第三方插件,可以拓展webpack的能力,从而让webpack用起来更方便。本文介绍两个常用的webpack插件:

1、webpack-dev-server

在Webpack开发中,webpack-dev-server是一个非常有用的工具,它提供了一个简单的web socket服务器,实时重新加载(live reloading)功能。它让webpack监听源代码的变化,每当修改了源代码,webpack会自动进行项目的打包和构建。这对于开发阶段非常有用,因为它可以让你看到代码更改后的即时效果,无需手动刷新浏览器。

2、html-webpack-plugin

webpack中的HTML插件(类似于一个模版引擎插件),可以通过此插件自己定制index.html页面的内容


webpak-dev-server

安装

npm i webpack-dev-server -D


配置webpack-dev-server

1、修改package.json文件script中的dev命令(或者新增一行命令)

"scripts": {

"dev": "webpack serve"

}

2、运行 npm run dev,重新进行项目打包,此时webpack-dev-server会启动一个实时打包的http服务器,默认监听8080端口,当8080被占用时,监听端口变为8081、8082...

3、以本地IP为例,在浏览器中访问 http://localhost:8080,查看自动打包效果


devServer节点

在webpack.config.js配置文件中,可以通过devServer节点对webpack-dev-server插件进行更多配置,比如:

derServer: {

open: true, //初次打包完成后,自动打开浏览器

host: '127.0.0.1', //实时打包启动的http服务器,所使用的主机地址

prot: 80 //实时打包所使用的端口

}


打包文件的位置

  • 不配置webpack-dev-server的情况下,webpack打包生成的文件,会存放到实际的物理磁盘上,且严格遵守开发者在webpack.config.js中指定配置,根据output节点指定路径进行存放。
  • 配置了webpack-dev-server之后,打包生成的文件存放到了内存中,不再根据output节点指定的路径,存放到实际的物理磁盘上,但依然遵循output节点中配置的文件名,这样提高了实时打包输出的性能。文化默认放到了项目的根目录中,而且是虚拟的,不可见的。


webpack-dev-server版本对于生成文件的影响

  • 在低版本的webpack-dev-server中,访问html静态文件,直接找到对应的目录打开即可,比如src目录下的index.html和app.html,访问 http://localhost:8080/src/app.html。
  • 在高于webpack-dev-server@4.4.0版本中,默认使用__dirname/public目录用于提供静态文件(__dirname表示配置文件webpack.config.js所在的目录),比如public目录下的index.html和app.html,运行webpack-dev-server后,会在项目根目录下自动生成虚拟的index.html和app.html,直接访问 http://localhot:8080/app.html即可。
  • 若不存在public目录,或目录下不存在html文件,则会报“Cannot GET ...”的错误。这时需要在webpack.config.js配置文件中使用directory指定其他目录,或者借助下面要说的插件html-webpack-plugin来实现。

注意:除html-webpack-plugin插件以外的方法,都需要在html文件中引入打包生成的虚拟js文件。

devServer: {

port: 8088, //指定端口

static: {

//path.join 用于连接多个路径片段并规范化路径

//__dirname 是指获取当前文件在当前项目中的准确路径

//具体路径:webpack.config.js所在目录下的src目录

directory: path.join(__dirname, 'src')

}

}


html-webpack-plugin

html-webpack-plugin是webpack中的HTML插件,可以通过此插件自定制index.html页面的内容。

比如:通过html-webpack-plugin插件,将src目录下的index.html文件,复制一份到项目根目录。

安装

npm i html-webpacl-plugin -D


配置html-webpack-plugin

打开webpack.config.js,加入以下配置

//导入 HTML 插件,用常量接收,得到一个构造函数(导入的是构造函数,首字母尽量用大写)

const HtmlPlugin = require('html-webpack-plugin');

//创建 HTML 插件的实例对象

const htmlPlugin = new HtmlPlugin({

template: './src/index.html', //指定原文件的存放路径

filename: './index.html', //指定生成文件的存放路径

})

module.exports = {

plugins: [htmlPlugin], //挂载插件实例对象:通过plugins节点,使htmlPlugin插件生效

}


html-webpack-plug说明

1、通过 HTML 插件复制到项目根目录中的index.html页面,也被放到了内存中

2、HTML插件生成的index.html页面的中,自动注入了打包生成的js文件


微信小程序
大潇博客 版权所有 Copyright ©2016~2025
京ICP备17004217号-6  合作QQ:284710375
天玺科技