使用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 相关文章推荐
js 图片缩放(按比例)控制代码
May 27 Javascript
jQuery 遍历json数组的实现代码
Sep 22 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
Oct 29 Javascript
js 有框架页面跳转(target)三种情况下的应用
Apr 09 Javascript
JavaScript声明变量名的语法规则
Jul 10 Javascript
Javascript实现Array和String互转换的方法
Dec 21 Javascript
原生javascript实现图片无缝滚动效果
Feb 12 Javascript
jQuery 跨域访问解决原理案例详解
Jul 09 Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 Javascript
Centos6.8下Node.js安装教程
May 12 Javascript
JavaScript 九种跨域方式实现原理
Feb 11 Javascript
javascript设计模式之装饰者模式
Jan 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
?繁体转换的class
2006/10/09 PHP
基于php下载文件的详解
2013/06/02 PHP
解析php多线程下载远程多个文件
2013/06/25 PHP
php对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
php进程间通讯实例分析
2016/07/11 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
web前端开发也需要日志
2010/12/09 Javascript
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
Vue异步加载about组件
2017/10/31 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
浅谈React + Webpack 构建打包优化
2018/01/23 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
python调用java的Webservice示例
2014/03/10 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
管理科学大学生求职信
2013/11/13 职场文书
小学生读书感言
2014/02/12 职场文书
XX部保密工作制度范本
2019/08/27 职场文书