本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/07/12/%E4%BB%80%E4%B9%88%E6%98%AFwebpack-dev-server/
摘要
本文主要讲述了:
- 作用
- 安装
- 启动
- 配置
正文
作用
webpack-dev-server
提供了一个简易的 web 服务器。它能监听模块文件的变更,重新打包并刷新页面。
安装
1 |
|
启动
1 |
|
注意:npx webpack serve
虽然进行了一次打包,但并不会将文件输出。相反,它将文件复制到内存中,可以通过 URL 直接访问。开发者可以访问/webpack-dev-server
路由查看内存中的文件列表。
注意:服务器启动之后,webpack
就会监听模块文件的变更。一旦监听到变更,就会重新打包并刷新页面。
配置
compress
是否启用 gzip 压缩。
示例:
learn_webpack/webpack.config.js
1 | module.exports = { |
contentBase
静态文件服务器根目录。
默认值为 CWD。推荐使用绝对路径。
示例:
learn_webpack/webpack.config.js
1 | module.exports = { |
示例:
learn_webpack/webpack.config.js
1 | const path = require('path'); |
示例:
learn_webpack/webpack.config.js
1 | const path = require('path'); |
host
默认值为localhost
。
如果希望 devServer 被局域网内的其他机器访问,指定为0.0.0.0
。
示例:
learn_webpack/webpack.config.js
1 | module.exports = { |
hot
是否启用 webpack 的 HMR 特性。
示例:
learn_webpack/webpack.config.js
1 | const webpack = require('webpack'); |
open
devServer 启动之后是否自动打开浏览器。
若为true
,自动打开默认浏览器。
示例:
learn_webpack/webpack.config.js
1 | module.exports = { |
若为浏览器名称,则打开指定的浏览器。
示例:
learn_webpack/webpack.config.js
1 | module.exports = { |
注意:浏览器名称是平台独立的。Chrome 在 macOS 中叫”Google Chrome”,在 Linux 中叫”google-chrome”,在 Windows 上叫”chrome”。
port
端口号
示例:
learn_webpack/webpack.config.js
1 | module.exports = { |
publicPath
构建目录的公共 URL 前缀(其实文件在内存里)。
默认值为/
。
示例:
learn_webpack/webpack.config.js
1 | module.exports = { |
注意:publicPath
必须以/
开头,以/
结尾。
stats
精确控制 devServer 启动时在控制台输出的信息
示例:
learn_webpack/webpack.config.js
1 | module.exports = { |
proxy
反向代理
target
源服务器的 host
示例:
learn_webpack/webpack.config.js
1 | module.exports = { |
或
1 | module.exports = { |
http://127.0.0.1:8080/api/index.js
-> http://127.0.0.1:3000/api/index.js
http://127.0.0.1:8080/foo/api/index.js
-> http://127.0.0.1:8080/foo/api/index.js
pathRewrite
反向代理向源服务器发起请求时,修改 URL。
示例:
learn_webpack/webpack.config.js
1 | module.exports = { |
http://127.0.0.1:8080/api/index.js
-> http://127.0.0.1:3000/index.js
changeOrigin
反向代理向源服务器发起请求时,是否修改host
请求头。
默认为false
。
- 若为
true
,则反向代理向源服务器发起请求时,host
请求头为源服务器的host
- 若为
false
,则反向代理向源服务器发起请求时,host
请求头为反向代理的host
注意:如果源服务器是基于域名的虚拟主机,必须为true
示例:
learn_webpack/webpack.config.js
1 | module.exports = { |
此时https://api.github.com/users?per_page=1&page=1
收到的host
请求头为api.github.com
context
当多个反向代理的target
一致时,可以使用context
属性。
示例:
learn_webpack/webpack.config.js
1 | module.exports = { |
http://127.0.0.1:8080/api/index.js
-> http://127.0.0.1:3000/api/index.js
http://127.0.0.1:8080/auth/index.js
-> http://127.0.0.1:3000/auth/index.js
secure
若源服务器的 HTTPS 证书是无效的,设为false
可以禁用证书校验
示例:
learn_webpack/webpack.config.js
1 | module.exports = { |
http://127.0.0.1:8080/api/index.js
-> https://localhost/api/index.js
参考资料
本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/07/12/%E4%BB%80%E4%B9%88%E6%98%AFwebpack-dev-server/
本文对你有帮助?请支持我
- 本文链接: https://jsweibo.github.io/2019/07/12/%E4%BB%80%E4%B9%88%E6%98%AFwebpack-dev-server/
- 版权声明: 除非另有说明,否则本网站上的内容根据署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。