上一篇文章里详细介绍了一下插件的用法,这一篇文章接着丰富module.exports
里的属性。现在的前端发展已经很是迅速了,伴随而来的是开发模式的转变。如今已经再也不是写个静态页面并放在浏览器里打开预览一下了。在实际的开发中会常常须要使用http
服务器,好比以前的ajax
,想要看到效果就必需搭建一个服务器。搭建服务器的方式有很是的多,而webpack
则原生的提供服务器的支持,你们无需再去下载软件。同时它还提供了自动刷新、热更新等功能,使开发变得很是方便。javascript
npm i webpack-dev-server -D
打开终端,并进入到对应的项目里(个人为webpack-demo
),执行命令webpack-dev-server
,若是终端里显示以下则表示已经成功开启服务器html
注意:
一、此时可能会提示webpack-dev-server
不是内部命令,解决办法为在全局再次安装一下webpack-dev-server
模块,或者在package.json
里的scripts
里加上"dev": "webpack-dev-server"
,而后执行命令npm run dev
二、此时我并无经过webpack
命令生成一个dist
目录(目录结构以下图),而后在浏览器里输入地址http://localhost:8080/
后,页面会正常显示。这个缘由是devServer
会将webpack
构建出的文件保存到内存里,不须要打包生成就能预览
webpack.config.js
的内容以下:前端
const path=require('path'); const HtmlWebpackPlugin=require('html-webpack-plugin'); module.exports={ entry:{ index:'./src/index.js', }, output:{ path:path.resolve(__dirname,'dist'), filename:'[name].bundle.js' }, plugins:[ new HtmlWebpackPlugin({ title:'陈学辉', template:'./src/template.html', filename:'index.html', }) ], devServer:{ host:'localhost', //服务器的ip地址 port:1573, //端口 open:true, //自动打开页面 } }
index.js
文件内容以下:java
console.log('这是入口文件');
template.html
文件内容以下:webpack
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title><%= htmlWebpackPlugin.options.title %></title> </head> <body> <div id="box">这是自带的div</div> </body> </html>
执行命令webpack-dev-server
后,浏览器会自动打开页面,同时若是修改index.js
文件后浏览器会自动刷新,以下图:web
默认状况下开启了服务器后,只要入口文件有更新那整个页面就会从新刷新。若是页面里引入的模块很是多的状况下让整个页面刷新就会变得有些慢,这个问题能够交给热更新去解决。热更新的意思就是只更新有改动的模块(像ajax同样局部刷新)ajax
一、引入webpack
模块npm
const webpack=require('webpack');
二、写入插件json
plugins:[ new HtmlWebpackPlugin({ title:'陈学辉', template:'./src/template.html', filename:'index.html', }), new webpack.HotModuleReplacementPlugin() //引入热更新插件 ]
三、devServer
里增长hot
参数segmentfault
devServer:{ host:'localhost', //服务器的ip地址 port:1573, //端口 open:true, //自动打开页面, hot:true, //开启热更新 }
此时并不能看出效果,到后面的文章里讲loader的时候就能够看出来效果devServer
的其它配置:https://webpack.docschina.org...
mode
是webpack4
新增的一条属性,它的意思为当前开发的环境。mode
的到来减小了不少的配置,它内置了不少的功能。相较之前的版本提高了不少,减小了不少专门的配置
- 提高了构建速度
- 默认为开发环境,不须要专门配置
- 提供压缩功能,不须要借助插件
- 提供
SouceMap
,不须要专门配置
mode
分为两种环境,一种是开发环境(development
),一种是生产环境(production
)。开发环境就是咱们写代码的环境,生产环境就是代码放到线上的环境。这两种环境的最直观区别就是,开发环境的代码不提供压缩,生产环境的代码提供压缩。
webpack --mode development
webpack --mode production
package.json
里添加"scripts": { "build": "webpack --mode production", "dev": "webpack-dev-server --mode development" },
此时后成dist
目录用的是生产环境,打开服务器用的是开发环境,而后经过命令执行npm run build
或者npm run dev
,它们的区别以下dist
目录里的index.bundle.js
内容以下:
http://localhost:1573/index.bundle.js内容以下: