欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

websocket4.0+typescript 實(shí)現(xiàn)熱更新的方法

 更新時(shí)間:2019年08月14日 08:29:34   作者:裴東來  
這篇文章主要介紹了websocket4.0+typescript 實(shí)現(xiàn)熱更新的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

最近搞了一個(gè)webpack4+typescript的開發(fā)環(huán)境,折騰了很久現(xiàn)在記錄一下。。。。

本身環(huán)境比較好搞,但是熱更新是個(gè)麻煩事兒

本環(huán)境是基于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就沒有效果

在熱更新的時(shí)候會出現(xiàn)很多hot-update.js和hot-update.json的細(xì)碎文件

使用hotUpdateChunkFilename和hotUpdateMainFilename指定他們只生成一個(gè)文件,目前沒有找到不生成這兩個(gè)文件的辦法,如果哪位大佬知道的話請告知。

plugins: [
  new HtmlWebpackPlugin({
   title: '模塊熱替換',
   template: './public/index.html'
  }),
  new webpack.HotModuleReplacementPlugin(),
  // 啟動(dòng)輸出清理
  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字段的,但是不管是兩個(gè)都加還是單獨(dú)使用任何一個(gè),HRM都沒有效果。。。。

最后發(fā)現(xiàn)兩個(gè)都不實(shí)用就可以。。。。。媽耶,我還是從官網(wǎng)看的這個(gè)配置。

到現(xiàn)在也不是很了解是怎么回事。。

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

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(),
  // 啟動(dòng)輸出清理
  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"
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論