使用webpack3.0配置webpack-dev-server教程


Posted in Javascript onMay 29, 2018

最近正在研究webpack,听说webpack可以自己搭建一个小型的服务器(使用过vue-cli的朋友应该都见识到过),所以迫不及待的想要尝试一下。不过,在实际操作中发现,用webpack搭建服务器仍有不少坑,一方面是由于自己对文档的不熟悉,不了解webpack-dev-server的运作模式;另一方面,在翻阅了不少博客和文章后,发现不少配置实际上都跑不起来(有可能是版本的原因,也有可能是我自己配置的原因)。所以我打算用webpack3.0把dev-server跑起来给大家演示一遍,顺便把一些配置和原理给大家讲清楚,这样就省的绕弯路了。

这里我就默认大家都已经安装了webpack以及自己需要使用的loader和plugins,由于webpack-dev-server是个独立的npm包,所以我们需要在npm下安装它: 

npm install webpack-dev-server --save-dev

之后我们就可以在webpack.config.js中进行配置:

const path = require("path");
module.exports = {
   entyr:{
      ....... //设置入口文件
   },
   output:{
      ....... //设置出口文件
   },
   module:{
      ....... //配置loader,注意使用rules而不是loaders
   },
   plugins:[
      ....... //注意是数组
   ],
   devServer:{
      //我们在这里对webpack-dev-server进行配置
   }        
}

devServer中常用的配置对象属性如下:

1. contentBase:"./" // 本地服务器在哪个目录搭建页面,一般我们在当前目录即可;

2. historyApiFallback:true // 当我们搭建spa应用时非常有用,它使用的是HTML5 History Api,任意的跳转或404响应可以指向 index.html页面;

3. inline:true // 用来支持dev-server自动刷新的配置,webpack有两种模式支持自动刷新,一种是iframe模式,一种是inline模式;使用iframe模式是不需要在devServer进行配置的,只需使用特定的URL格式访问即可;不过我们一般还是常用inline模式,在devServer中对inline设置为true后,当我们启动webpack-dev-server时仍要需要配置inline才能生效,这一点我们之后再说;

4. hot:true // 启动webpack热模块替换特性,这里也是坑最多的地方,不少博客都将hot设置了true,我们姑且也设置为true,之后再看;

5. port:端口号(默认8080) // 这就不用我多说了吧;

事实上大概常用的配置也就这样,为了方便,我们在packjson中对webpack-dev-server的的启动进行一下设置:

"scripts": {
  ......
  ......
  "start":"webpack-dev-server --inline"
 },

别忘了在devServer中设置inline:true后这里也要设置一下!

这时我们打包后再运行服务器后应该发现index.html页面已经展示了,打包好后的js文件虽然出现在了src上,但并没有显示,打开控制台会发现如下报错:

使用webpack3.0配置webpack-dev-server教程

控制台显示:Hot Module Replacement is disabled;

奇怪?我们之前不是在devServer中设置了hot为true了吗?事实上,虽然不知道为什么,但是目前来说hot这个属性已经没有用了,使用热模块的话我们需要用到一个叫webpack.HotModuleReplacementPlugin的插件。所以我们的webpack.config.js需要加上这些:

const path = require("path");
const webpack = requier ("webpack");

module.exports = {
   entyr:{
      ....... //设置入口文件
   },
   output:{
      ....... //设置出口文件
   },
   module:{
      ....... //配置loader,注意使用rules而不是loaders
   },
   plugins:[
     new webpack.HotModuleReplacementPlugin()
      ....... //注意是数组
   ],
   devServer:{
     contentBase: "./", 
   historyApiFallback:true,
   inline:true,
   hot:true
   }        
}

这时我们再在bash上运行npm run start后发现服务器就搭建完成了!

使用webpack3.0配置webpack-dev-server教程

另外,还有一点值得注意的就是,webpack-dev-server所使用的bundle.js文件并不是webpack.config.js中output打包生成的bundle.js,而是使用webpack-dev-server自己打包生成的,这个文件不存在与output或其他路径中,而是存到了内存中,事实上webpack-dev-server所使用的那个bundle.js我们是看不到的!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript基础教程之数据类型 (布尔型 Boolean)
Jan 18 Javascript
JQuery基础语法小结
Feb 27 Javascript
JavaScript中exec函数用法实例分析
Jun 08 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
Jan 24 Javascript
js Canvas实现的日历时钟案例分享
Dec 25 Javascript
js for循环倒序输出数组元素的实例
Mar 01 Javascript
关于JavaScript的单双引号嵌套问题
Aug 20 Javascript
vuejs实现递归树型菜单组件
Jan 13 Javascript
vue配置请求本地json数据的方法
Apr 11 Javascript
原生JS实现列表子元素顺序反转的方法分析
Jul 02 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
Feb 19 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
Feb 24 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
May 29 #Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
May 29 #Javascript
Vue 全局loading组件实例详解
May 29 #Javascript
详解vue-cli 本地开发mock数据使用方法
May 29 #Javascript
详解vue-cli项目中怎么使用mock数据
May 29 #Javascript
js统计页面上每个标签的数量实例代码
May 29 #Javascript
浅谈React的最大亮点之虚拟DOM
May 29 #Javascript
You might like
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
Javascript 二维数组
2009/11/26 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
NodeJS远程代码执行
2016/08/28 NodeJs
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
react 生命周期实例分析
2020/05/18 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
零基础写python爬虫之神器正则表达式
2014/11/06 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
浅析Python数字类型和字符串类型的内置方法
2019/12/22 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
员工年终演讲稿
2014/01/03 职场文书
管理部副部长岗位职责范文
2014/03/09 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript