タグ: Browsersync

  • Browsersync とローカルサーバーを連携させて自動リロードさせる。

    おかんが喜ぶらしいので書きます。

    Browsersync という node.js 製の開発ツールがあります。これを使うと、開発用のサーバーが(通常 localhost:3000)で立ち上がって、ファイルの変更時にブラウザを自動リロードしてくれたり、CSSとかを自動で差し替えてくれたり、 見ている全てのブラウザでスクロールの位置などを同期してくれたりととにかくいろいろ便利なツールです。Sass や Babel 等と組み合わせるととても便利だったりします。

    VCCWWocker や PHP のビルトインサーバーで WordPress や PHP の開発を行ったりしますが、そのときにも Browsersync 出来たら便利ですよね。(というか別にWordPressやPHP以外でも便利です)

    こんな感じで出来ます。何はともあれ、Browsersync をインストールします。

    $ npm install -D browser-sync

    そして、こんな感じで、server.js のようなファイルを、開発中のテーマの中に作ります。

    var browserSync = require("browser-sync");
    browserSync({
      proxy: 'vccw.dev',
      files: [
    	"./dist/styles/**/*.css",
    	"./dist/scripts/**/*.js",
    	"./**/*.php",
      ]
    });

    proxy に設定するのは、ローカルサーバーの hostname です。WP-CLI でローカルWEBサーバーを立てて開発などをしているときは、localhost:8080 等にします。

    files には、監視するファイルを入れます。指定したファイルに変更があったときにブラウザが自動でリロードしたり、CSSファイルの場合は、動的に差し替えてくれます。JS や CSS をビルドしたりする際は、出力されたものだけを指定しておくのがベターです。

    そして、server.js を起動すると、Browsersync が起動して、いろいろ便利にやってくれます。

    $ node server.js

    package.json に

    {
      "scripts": {
        "serve": "node ./server.js"
      }
    }

    等と書いておくと、

    $ npm run serve

    みたいな感じで使えるので、よりスマートかなーと思います。

    glup と組み合わせる場合

    gulp を使っている場合はこんな感じになります。

    var browserSync = require("browser-sync");
    var gulp = require('gulp');
    var sass = require('gulp-sass');
    
    gulp.task('sass', function(){
      gulp.src('./src/styles/*.scss')
        .pipe(sass())
        .pipe(gulp.dest('./dist/styles'));
    });
    
    gulp.task('browserSync', function () {
      browserSync({
        proxy: 'vccw.dev',
        files: [
    	    "./dist/styles/**/*.css",
    	    "./dist/scripts/**/*.js",
    	    "./**/*.php",
        ]
      });
    });
    
    gulp.task('watch', function(){
      gulp.watch('./src/styles/*.scss', ['sass']);
    });
    
    gulp.task('default', ['browserSync', 'sass', 'watch']);

    gulp で sass の自動ビルドをやってる場合などは、こんな感じで使えば良いんじゃ無いかなと思います。