ライブリロードとCSS注入
Browsersyncとgulpを使用して、 同じWiFiネットワーク上で複数の端末からアクセス出来る開発用のサーバーを、簡単に作成することが出来ます。 また、BrowserSyncはライブリロードを組み込みで持つため、そのための設定はありません。
まず、モジュールをインストールします。
$ npm install --save-dev browser-sync
次に下記のファイル構成を想定します。
gulpfile.js
app/
styles/
main.css
scripts/
main.js
index.html
appディレクトリのファイルが簡単に提供可能で、
下記のgulpfile.js
に従って、変更があった際には全てのブラウザがリロードされます。
var gulp = require('gulp');
var browserSync = require('browser-sync');
var reload = browserSync.reload;
// 変更ファイルの監視とリロード
gulp.task('serve', function() {
browserSync({
server: {
baseDir: 'app'
}
});
gulp.watch(['*.html', 'styles/**/*.css', 'scripts/**/*.js'], {cwd: 'app'}, reload);
});
そして、index.html
にCSSを指定します。
<html>
<head>
...
<link rel="stylesheet" href="styles/main.css">
...
ファイルがデフォルトURL(http://localhost:3000)上で、ブラウザに提供されるように下記を実行します。
gulp serve
CSSプリプロセッサ
よくあるケースに、プリプロセス後のCSSファイルのリロードがあります。 Sassを使用したこの例では、ページ全体をリフレッシュせずに、CSSの再読み込みをブラウザに指示します。
ファイル構成を次のように更新したと仮定します。
gulpfile.js
app/
scss/
main.scss
scripts/
main.js
index.html
scss
ディレクトリのSassファイルを監視して、
gulpfile.js
に従って変更があった際に、全てのブラウザのリロードを簡単に行うことが出来ます。
var gulp = require('gulp');
var sass = require('gulp-ruby-sass');
var browserSync = require('browser-sync');
var reload = browserSync.reload;
gulp.task('sass', function() {
return sass('scss/styles.scss')
.pipe(gulp.dest('app/css'))
.pipe(reload({ stream:true }));
});
// Sassファイルの変更を監視し、'sass'タスクでSassのプリプロセッサを実行してリロード
gulp.task('serve', ['sass'], function() {
browserSync({
server: {
baseDir: 'app'
}
});
gulp.watch('app/scss/*.scss', ['sass']);
});
index.html
でプリプロセス済みのCSSを指定します。
<html>
<head>
...
<link rel="stylesheet" href="css/main.css">
...
ファイルがデフォルトURL(http://localhost:3000)上で、ブラウザに提供されるように下記を実行します。
gulp serve
追加情報
- ライブリロードとCSS注入、スクロール/フォームの同期は、 BrowserStack仮想マシン内部でシームレスに動作します。
-
tunnel: true
を設定することで、公開URLでローカルサイトを閲覧することが出来ます。(BrowserSync機能が全て有効)
© 2010 - 2017 STUDIO KINGDOM