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简单实现根据身份证号码识别性别年龄生日
Nov 29 Javascript
jquery自动填充勾选框即把勾选框打上true
Mar 24 Javascript
前端必备神器 Snap.svg 弹动效果
Nov 10 Javascript
js实现文本框支持加减运算的方法
Aug 19 Javascript
Node.js开发者必须了解的4个JS要点
Feb 21 Javascript
EasyUI Pagination 分页的两种做法小结
Jul 09 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
Aug 24 Javascript
简单实现bootstrap选项卡效果
Feb 08 Javascript
探讨Vue.js的组件和模板
Oct 27 Javascript
SVG实现时钟效果
Jul 17 Javascript
小试小程序云开发(小结)
Jun 06 Javascript
Vue实现手机计算器
Aug 17 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
linux实现php定时执行cron任务详解
2013/12/24 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
jQuery实现图片放大预览实现原理及代码
2013/09/12 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
jQuery对val和atrr("value")赋值的区别介绍
2014/09/26 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
python的常见命令注入威胁
2013/02/18 Python
Python实现的栈(Stack)
2018/01/26 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
Python操作Excel的学习笔记
2021/02/18 Python
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
美国知名生活购物网站:Goop
2017/11/03 全球购物
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
工业设计专业个人求职信范文
2013/12/28 职场文书
创业融资计划书
2014/04/25 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
创先争优承诺书
2015/01/20 职场文书
高考1977观后感
2015/06/04 职场文书
升学宴家长答谢词
2015/09/29 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python