websocket4.0+typescript 实现热更新的方法


Posted in Javascript onAugust 14, 2019

最近搞了一个webpack4+typescript的开发环境,折腾了很久现在记录一下。。。。

本身环境比较好搞,但是热更新是个麻烦事儿

本环境是基于webpack-dev-server搭建的

output: {
  publicPath: '/dist',
  path: path.resolve(__dirname, 'dist'),
  filename: 'ljax.bundle.js',
  hotUpdateChunkFilename: 'hot/hot-update.js',
  hotUpdateMainFilename: 'hot/hot-update.json'
 },

publicPath是必须的字段,不添加HRM就没有效果

在热更新的时候会出现很多hot-update.js和hot-update.json的细碎文件

使用hotUpdateChunkFilename和hotUpdateMainFilename指定他们只生成一个文件,目前没有找到不生成这两个文件的办法,如果哪位大佬知道的话请告知。

plugins: [
  new HtmlWebpackPlugin({
   title: '模块热替换',
   template: './public/index.html'
  }),
  new webpack.HotModuleReplacementPlugin(),
  // 启动输出清理
  new FriendlyErrorsWebpackPlugin({
   compilationSuccessInfo: {
    messages: [`You application is running here ${HTTPS ? 'https' : 'http'}://${HOST}:${PORT}`],
    // notes: ['Some additional notes to be displayed upon successful compilation'],
    clearConsole: true
   },
  })
 ],

HotModuleReplacementPlugin是热更新必不可少的插件

contentBase: __dirname,
  quiet: true,
  compress: true,
  port: PORT,
  host: HOST,
  https: HTTPS,
  // hot: true,
  // hotOnly: true,
  // inline: true,
  open: true,
  overlay: true,
  openPage: './dist/index.html'

最坑的地方来了,我一开始是加上可hot和hotOnly字段的,但是不管是两个都加还是单独使用任何一个,HRM都没有效果。。。。

最后发现两个都不实用就可以。。。。。妈耶,我还是从官网看的这个配置。

到现在也不是很了解是怎么回事。。

最后,贴一下完整的配置吧

webpack.config.js

const path = require('path')
const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin')
const webpack = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')

const HOST = 'localhost'
const PORT = 8080
const HTTPS = false

module.exports = {
 mode: 'development',

 context: __dirname,

 entry: {
  app: './src/index.ts'
 },

 output: {
  publicPath: '/dist',
  path: path.resolve(__dirname, 'dist'),
  filename: 'ljax.bundle.js',
  hotUpdateChunkFilename: 'hot/hot-update.js',
  hotUpdateMainFilename: 'hot/hot-update.json'
 },

 module: {
  rules: [
   { test: /\.ts/, use: 'ts-loader', exclude: /node_modules/ }
  ]
 },

 resolve: {
  extensions: ['.ts', '.js']
 },

 plugins: [
  new HtmlWebpackPlugin({
   title: '模块热替换',
   template: './public/index.html'
  }),
  new webpack.HotModuleReplacementPlugin(),
  // 启动输出清理
  new FriendlyErrorsWebpackPlugin({
   compilationSuccessInfo: {
    messages: [`You application is running here ${HTTPS ? 'https' : 'http'}://${HOST}:${PORT}`],
    // notes: ['Some additional notes to be displayed upon successful compilation'],
    clearConsole: true
   },
  })
 ],

 devServer: {
  contentBase: __dirname,
  quiet: true,
  compress: true,
  port: PORT,
  host: HOST,
  https: HTTPS,
  // hot: true,
  // hotOnly: true,
  // inline: true,
  open: true,
  overlay: true,
  openPage: './dist/index.html'
 }
}

package.json

{
 "name": "ljax",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "watch": "webpack -w",
  "dev-server": "webpack-dev-server",
  "serve": "start yarn dev-server && yarn watch"
 },
 "author": "",
 "license": "ISC",
 "dependencies": {
  "friendly-errors-webpack-plugin": "^1.7.0",
  "html-webpack-plugin": "^3.2.0",
  "ts-loader": "^6.0.4",
  "typescript": "^3.5.3",
  "webpack": "^4.39.1",
  "webpack-dev-server": "^3.7.2"
 },
 "devDependencies": {
  "webpack-cli": "^3.3.6"
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
动态为事件添加js代码示例
Feb 15 Javascript
javascript 上下banner替换具体实现
Nov 14 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
May 26 Javascript
JS实现的跨浏览器解析XML文件实例
Jun 21 Javascript
AngularJs基于角色的前端访问控制的实现
Nov 07 Javascript
js验证手机号、密码、短信验证码代码工具类
Jun 24 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
Jul 27 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
Nov 15 Javascript
js实现左右两侧浮动广告
Jul 09 Javascript
Vuex 单状态库与多模块状态库详解
Dec 11 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
May 18 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
Mar 04 Javascript
利用JavaScript的Map提升性能的方法详解
Aug 14 #Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
Aug 13 #Javascript
vue源码nextTick使用及原理解析
Aug 13 #Javascript
封装微信小程序http拦截器过程解析
Aug 13 #Javascript
Vue中通过Vue.extend动态创建实例的方法
Aug 13 #Javascript
微信小程序封装分享与分销功能过程解析
Aug 13 #Javascript
node删除、复制文件或文件夹示例代码
Aug 13 #Javascript
You might like
用PHP实现多服务器共享SESSION数据的方法
2007/03/16 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
PHP 中关于ord($str)>0x80的详细说明
2012/09/23 PHP
php实现的一个简单json rpc框架实例
2015/03/30 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
基于ajax与msmq技术的消息推送功能实现代码
2016/12/26 Javascript
详解vuejs几种不同组件(页面)间传值的方式
2017/06/01 Javascript
js案例之鼠标跟随jquery版(实例讲解)
2017/07/21 jQuery
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
JS常用跨域方法实现原理解析
2020/12/09 Javascript
python执行CMD指令,并获取返回的方法
2018/12/19 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
python列表推导式操作解析
2019/11/26 Python
Python读取表格类型文件代码实例
2020/02/17 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
PHP两种查询函数array/row的区别
2013/06/03 面试题
2014年创卫实施方案
2014/02/18 职场文书
任命书范本大全
2014/06/06 职场文书
年度考核个人总结
2015/03/06 职场文书
迁徙的鸟观后感
2015/06/09 职场文书
丧事主持词
2015/07/02 职场文书
企业财务管理制度范本
2015/08/04 职场文书
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android