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 相关文章推荐
IE8 原生JSON支持
Apr 13 Javascript
替代window.event.srcElement效果的可兼容性的函数
Dec 18 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
Jul 14 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
Jul 08 Javascript
动态加载js、css等文件跨iframe实现
Feb 24 Javascript
js判断页面中是否有指定控件的简单实例
Mar 04 Javascript
js实现创建删除html元素小结
Sep 30 Javascript
JS 清除字符串数组中,重复元素的实现方法
May 24 Javascript
JavaScript html5利用FileReader实现上传功能
Mar 27 Javascript
JS实现汉字与Unicode码相互转换的方法详解
Apr 28 Javascript
vue2中的keep-alive使用总结及注意事项
Dec 21 Javascript
Mint UI组件库CheckList使用及踩坑总结
Dec 20 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
支持oicq头像的留言簿(一)
2006/10/09 PHP
php获取mysql数据库中的所有表名的代码
2011/04/23 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
bootstrap中添加额外的图标实例代码
2017/02/15 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
vue的toast弹窗组件实例详解
2018/05/14 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
Python 字典dict使用介绍
2014/11/30 Python
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
python 伯努利分布详解
2020/02/25 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
Python configparser模块常用方法解析
2020/05/22 Python
python实现双人五子棋(终端版)
2020/12/30 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
乐天旅游台湾网站:Rakuten Travel TW
2017/06/01 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
宝信软件JAVA工程师面试经历
2012/08/19 面试题
会计主管岗位职责
2014/01/03 职场文书
大学生两会精神学习心得体会
2014/03/10 职场文书
保险公司早会主持词
2014/03/22 职场文书
大学生社团活动总结
2014/04/26 职场文书
争先创优活动总结
2014/08/27 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
世界十大狙击步枪排行榜
2022/03/20 杂记