使用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 相关文章推荐
jQuery+css3实现文字跟随鼠标的上下抖动
Jul 31 Javascript
详解前端自动化工具gulp自动添加版本号
Dec 20 Javascript
微信小程序 小程序制作及动画(animation样式)详解
Jan 06 Javascript
jquery——九宫格大转盘抽奖实例
Jan 16 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
Mar 09 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
May 10 Javascript
深入浅析javascript函数中with
Oct 28 Javascript
Vue的全局过滤器和私有过滤器的实现
Apr 20 Javascript
js实现鼠标点击飘爱心效果
Aug 19 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
Aug 25 Javascript
Vue自定义表单内容检查rules实例
Oct 30 Javascript
JS代码编译器Monaco使用方法
Jun 11 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简单封装了一些常用JS操作
2007/02/25 PHP
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
浅析iis7.5安装配置php环境
2015/05/10 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
php数据序列化测试实例详解
2017/08/12 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
Jquery实现页面加载时弹出对话框代码
2013/04/19 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
vue根据值给予不同class的实例
2018/09/29 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
python 实现提取log文件中的关键句子,并进行统计分析
2019/12/24 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
应届毕业生就业自荐信
2013/10/26 职场文书
简历的自我评价范文
2014/02/04 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
四风自我剖析材料
2014/09/30 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang