詳解webpack的文件監(jiān)聽實現(xiàn)(熱更新)
前言
文件監(jiān)聽是在源碼發(fā)生變化時,自動重新構(gòu)建出新的輸出文件。
webpack 開啟監(jiān)聽模式,有兩種方式:
1.啟動 webpack 命令時,帶上 --watch 參數(shù)。
唯一缺點:需要手動刷新才能看到變化;
2.在配置 webpack.config.js 中設(shè)置 watch: true。
優(yōu)點:
(1) WDS 不刷新瀏覽器
(2) WDS 不輸出文件,⽽是放在內(nèi)存中
(3) 使⽤用 HotModuleReplacementPlugin 插件
1 第一種方式, --watch
1.1 配置package.json
{
// ...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"watch": "webpack --watch" // 新增配置
}
// ...
}
1.2 到控制臺輸入 npm run watch

1.3 修改文件,保存后,會自動打包,到瀏覽器刷新,才能看到變化。
1.4 文件監(jiān)聽的原理理分析
輪詢判斷文件的最后編輯時間是否變化
某個⽂件發(fā)⽣生了了變化,并不會⽴刻告訴監(jiān)聽者,⽽是先緩存起來,等 aggregateTimeout
module.export = {
//默認(rèn) false,也就是不不開啟
watch: true,
//只有開啟監(jiān)聽模式時,watchOptions才有意義
wathcOptions: {
//默認(rèn)為空,不監(jiān)聽的文件或者文件夾,支持正則匹配
ignored: /node_modules/,
//監(jiān)聽到變化發(fā)生后會等300ms再去執(zhí)行,默認(rèn)300ms
aggregateTimeout: 300,
//判斷文件是否發(fā)生變化是通過不停詢問系統(tǒng)指定文件有沒有變化實現(xiàn)的,默認(rèn)每秒問1000次
poll: 1000
}
}
2 第二種方式,在配置 webpack.config.js 中設(shè)置 watch: true(熱更新:webpack-dev-server)
2.1 配置package.json
{
// ...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"dev": "webpack-dev-server --open" // 新增配置,運行 npm run dev 會自動打開瀏覽器
}
// ...
}
2.2 配置webpack.config.js
'use strict'
const path = require('path');
var webpack = require('webpack'); // 引進(jìn) webpack
module.exports = {
// ...
mode:'development', // production 改為開發(fā)環(huán)境,因為只有開發(fā)環(huán)境才用到熱更新
module:{
// ...
},
plugins:[
new webpack.HotModuleReplacementPlugin()
],
devServer:{
contentBase:'./dist',
hot: true
}
}
2.3 到控制臺運行 npm run dev,即可運行!
到此這篇關(guān)于詳解webpack的文件監(jiān)聽實現(xiàn)(熱更新)的文章就介紹到這了,更多相關(guān)webpack 文件監(jiān)聽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript簡單生成 N~M 之間隨機(jī)數(shù)的方法
這篇文章主要介紹了JavaScript簡單生成 N~M 之間隨機(jī)數(shù)的方法,結(jié)合自定義函數(shù)分析了JS生成固定區(qū)間內(nèi)隨機(jī)數(shù)的相關(guān)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2017-01-01
javascript中運用閉包和自執(zhí)行函數(shù)解決大量的全局變量問題
做為一個javascript新手,為了程式的簡便,可能會在javascript中運用了大量的全局變量,雖然一時看來,問題解決了,而且也可能讓編碼變得更加的簡單。2010-12-12
js中arguments,caller,callee,apply的用法小結(jié)
本篇文章只要是對js中arguments,caller,callee,apply的用法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01
Javascript操縱Cookie實現(xiàn)購物車程序
Javascript操縱Cookie實現(xiàn)購物車程序...2006-11-11
微信小程序+ECharts實現(xiàn)動態(tài)刷新的過程記錄
這篇文章主要給大家介紹了關(guān)于微信小程序+ECharts實現(xiàn)動態(tài)刷新的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05

