前言
在開發 Web 應用時,我們很常針對瀏覽器執行重新整理的指令,以便查看最新修改過後結果,從專案開始到結束,我們可能按了無數次的 F5,造成效率的低落,這時我們就可以使用 BrowserSync 這款工具,BrowserSync 能讓瀏覽器實現、快速響應你的文件修改(HTML、JavaScript、CSS、Sass、Less)並自動刷新頁面,啟動時會在本地端開啟一個虛擬伺服器,這也代表了不同裝置間能夠依靠伺服器位址同步更新並觀看頁面,無論你是前端還是後端工程師,都非常建議使用這款工具。
筆記重點
- BrowserSync 安裝
- BrowserSync 基本使用
- BrowserSync 可傳遞選項
BrowserSync 安裝
套件連結:browser-sync
1 | $ npm install browser-sync |
npm 上有一款名為 browsersync 的套件,這個套件並不是 BrowserSync 官方的套件,正確的套件名稱為 browser-sync,請安裝正確的官方套件,以便後面的範例能夠順利進行。
BrowserSync 基本使用
初始專案結構:
1 | gulp-demo/ |
載入並使用 browser-sync:
1 | const gulp = require('gulp'); |
執行指定任務:
1 | $ gulp watch |
此時瀏覽器會開啟指向 ./public
資料夾的虛擬伺服器(localhost:xxxx),配合 gulp.watch()
的使用,能夠在編寫 ./source
資料夾中的指定檔案時(檔案有更動時),實現 LiveReload 的效果,從此之後都不需要在按 F5 重新整理囉。
可能有人已經發現上面這段代碼的 Bug 了,在執行 gulp watch 時,雖然會直接開啟 localhost 伺服器,但執行的代碼並不是最新的,需要觸發指定目錄的更改,才能夠執行編譯並渲染最新畫面,正確的流程應該為執行 gulp watch 指令時,我們需要再開啟 localhost 伺服器之前,執行 sass
與 copyHTML
任務,已讓虛擬伺服器渲染最新的畫面,針對上述所提到的問題,我們可以新增一個 Gulp Task:
1 | gulp.task('default', gulp.series('copyHTML', 'sass', 'watch')); |
這是一個名為 default 的 Task,主要利用了 gulp.series()
同步進行任務語法來完成,也就代表當執行 gulp 指令時,會依序執行 copyHTML
、sass
、watch
任務,此時的結果正好符合我們的預期,問題也就解決了。
BrowserSync 可傳遞選項
可參考 BrowserSync Options 可傳遞參數列表,以下為常用的參數配置:
port:
Number
端口號碼,默認為3000
reloadDelay:
Number
瀏覽器重新加載時間(以毫秒為單位),默認為0
範例:
1 | gulp.task('watch', () => { |