Browsersync でブラウザのリロードを自動化

概要

Webアプリケーションのフロントエンドを開発する際、ブラウザを開いて適宜動作確認しながらHTML/CSS/JavaScriptのコーディングを進めていくことが多い。典型的には、ファイルを編集した後にブラウザに反映させるため、手動でリロードを行う必要がある。これは一見大した手間ではないが、何度も繰り返していると面倒になってくる。Browsersync を使えば、そのリロード作業を自動化することができる。

公式

インストール

Node.js

Browsersync は Node.js のパッケージなので、使うには Node.js が必要。

インストールされていなければインストールする。

Browsersync

次のコマンドを実行する。

npm install -g browser-sync

インストールが完了すると browser-sync コマンドが使えるようになる。

確認

browser-sync --version

使い方

とりあえず動かす

アプリケーションの開発ディレクトリに移動する(ここでは ~/example-app/)。

cd ~/example-app/

次のコマンドを実行する。

browser-sync start --server --files='**/*.html,**/*.css,**/*.js' --startPath=/dist/index.html

デフォルトブラウザが立ち上がり、--startPath で指定したファイルが開かれる。

(--files で指定したファイル─開発ディレクトリ配下の全HTML,CSS,JavaScriptファイル─の更新が監視されている状態)

試しに何かファイルを編集してみると、自動でブラウザがリロードされることが確認できる。

(「hello」と入力して保存、続けて「world」と入力して保存)

監視を止めるには、(browser-sync を実行した)コマンドラインで Ctrl+C

仕組み

上で実行した browser-sync コマンドは、ローカルに Browsersync サーバを立ち上げている。

このサーバは単にリクエストされたファイルを返却する他、--files で指定されたファイルの更新を監視し、更新を検知した場合はブラウザにメッセージを送り、リロードを行う。

オプションの説明

--server
上記 Browsersync サーバを立ち上げる。代わりに --proxy オプションを指定してプロキシサーバとして動作させることも可能。
--files='**/*.html,**/*.css,**/*.js'
監視対象のファイルの指定。*.html だと開発ディレクトリ直下のHTMLファイルしか監視対象にならないが、**/*.html とすることで再帰的にサブディレクトリを辿って監視対象にしてくれる。監視範囲を制限したい場合は dist/**/*.html のように先頭にディレクトリ名を付け加えれば良い。
--startPath=/dist/index.html
最初に開くファイルの指定。省略時は /index.html が開かれる。
--port
今回は指定していないが、指定することで Browsersync サーバが使うポート番号を変更できる。省略時は3000
--browser
今回は指定していないが、指定することで立ち上げるブラウザを変更できる。省略時はユーザのデフォルトブラウザ。
指定例)--browser=firefox, --browser='google chrome' (ブラウザの起動には opn.js という別の Node.js パッケージを使っているので詳しくはそちらのドキュメントを参照)
--no-notify
今回は指定していないが、指定することで画面右上に出てくる通知を非表示にできる。

以上


執筆時の環境

  • macOS High Sierra 10.13.6
  • Node.js v8.11.1
  • Browsersync 2.24.4