使用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 相关文章推荐
Prototype1.6 JS 官方下载地址
Nov 30 Javascript
JQuery调用绑定click事件的3种写法
Mar 28 Javascript
Javascript动态创建表格及删除行列的方法
May 15 Javascript
jQuery Validate验证框架经典大全
Sep 23 Javascript
js实现图片淡入淡出切换简易效果
Aug 22 Javascript
使用bat打开多个cmd窗口执行gulp、node
Feb 17 Javascript
Vue项目全局配置微信分享思路详解
May 04 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
Dec 05 Javascript
vue实现树形结构样式和功能的实例代码
Oct 15 Javascript
electron+vue实现div contenteditable截图功能
Jan 07 Javascript
JS Array.from()将伪数组转换成数组的方法示例
Mar 23 Javascript
微信小程序轮播图swiper代码详解
Dec 01 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/06/11 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
javascript贪吃蛇完整版(源码)
2013/12/09 Javascript
js中replace的用法总结
2013/12/27 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
node.js学习之断言assert的使用示例
2017/09/28 Javascript
JavaScript Date对象应用实例分享
2017/10/30 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
2018/12/03 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
python 解析XML python模块xml.dom解析xml实例代码
2014/02/07 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
使用python绘制二维图形示例
2019/11/22 Python
Python过滤序列元素的方法
2020/07/31 Python
商务英语专业应届毕业生求职信
2013/10/28 职场文书
校庆活动策划方案
2014/06/05 职场文书
好的旅游活动方案
2014/08/19 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
平遥古城导游词
2015/02/03 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
岗位聘任协议书
2015/09/21 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书