使用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 相关文章推荐
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
May 24 Javascript
jquery操作select详解(取值,设置选中)
Feb 07 Javascript
JS实现的4种数字千位符格式化方法分享
Mar 02 Javascript
利用js实现禁止复制文本信息
Jun 03 Javascript
JS获取当前脚本文件的绝对路径
Mar 02 Javascript
JS触发服务器控件的单击事件(详解)
Aug 06 Javascript
Angular在一个页面中使用两个ng-app的方法
Feb 20 Javascript
vue项目国际化vue-i18n的安装使用教程
Mar 14 Javascript
vue.js实现左边导航切换右边内容
Oct 21 Javascript
vue实现路由不变的情况下,刷新页面操作示例
Feb 02 Javascript
JavaScript函数重载操作实例浅析
May 02 Javascript
基于JavaScript实现猜数字游戏代码实例
Jul 30 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
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
PHP反向代理类代码
2014/08/15 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
JS option location 页面跳转实现代码
2008/12/27 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
在Vuex中Mutations修改状态操作
2020/07/24 Javascript
Vue.js原理分析之nextTick实现详解
2020/09/07 Javascript
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
工艺工程师工作职责
2013/11/23 职场文书
事业单位请假制度
2014/01/13 职场文书
大学生实习感言
2014/01/16 职场文书
工作时间上网检讨书
2014/02/03 职场文书
交通事故调解协议书
2014/04/16 职场文书
八年级上册语文教学计划
2015/01/22 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
交心谈心活动总结
2015/05/11 职场文书
水浒传读书笔记
2015/06/25 职场文书
mysql函数之截取字符串的实现
2022/08/14 MySQL