使用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 Array对象基础知识小结
Nov 16 Javascript
通过正则表达式实现表单验证是否为中文
Feb 18 Javascript
jQuery控制div实现随滚动条滚动效果
Jun 07 Javascript
JavaScript 计算笛卡尔积实例详解
Dec 02 Javascript
JavaScript实现经纬度转换成地址功能
Mar 28 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
Aug 07 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
Apr 26 Javascript
vue+elementUI实现图片上传功能
Aug 20 Javascript
JavaScript中变量提升机制示例详解
Dec 27 Javascript
js实现树形数据转成扁平数据的方法示例
Feb 27 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
Aug 04 Javascript
用几道面试题来看JavaScript执行机制
Apr 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
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
php编程每天必学之验证码
2016/03/03 PHP
smarty模板数学运算示例
2016/12/11 PHP
JavaScript日历实现代码
2010/09/12 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
在JS数组特定索引处指定位置插入元素的技巧
2014/08/24 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
详解jQuery中的empty、remove和detach
2016/04/11 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
python冒泡排序算法的实现代码
2013/11/21 Python
理论讲解python多进程并发编程
2018/02/09 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
计算机专业个人简短的自我评价
2013/10/23 职场文书
幼儿园家长会欢迎词
2014/01/09 职场文书
财务负责人任命书
2014/06/06 职场文书
学生实习证明范文
2014/09/28 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
优秀班主任工作总结2015
2015/05/25 职场文书
演讲开场白台词大全
2015/05/29 职场文书
Python 中random 库的详细使用
2021/06/03 Python
Python中re模块的元字符使用小结
2022/04/07 Python