gulpでsassとbrowser-syncを動かす

電脳備忘録

本記事のソースコードの利用によって生じた損害について、当方は一切の責任を負いません。ご自身の判断と責任のもとで参照・ご利用ください。

この記事は最終更新から2年以上経過しています。

これまで、gulpはsassをcssにコンパイルするためだけにしか使っていませんでしたが、なんでbrowser-sync使わないの?って言われたので設定してみました。
browser-sync、設定しようとしてうまくいかなかったんですよね。今回もCannot連発でかなり苦戦し、ファイアウォールの設定を疑ったりもしましたが、単に設定がまずかっただけでした。

構成はこんな感じ、 2023-06-08-001.jpg developディレクトリ内のファイルを監視します。

gulpfileの中身はこんな感じ。監視対象に変化(保存)があった場合、
sassファイル保存時にsassタスクが実行される。

browser-syncがインストールされていない場合はインストールする。

npm install browser-sync gulp --save-dev

htmlファイルとcssファイルに保存(変化)があった際にbrowser-reloadタスクが実施される。
といった解釈でいいのかな?

const gulp = require('gulp');
const sass = require('gulp-sass')(require('sass'));
const browserSync = require('browser-sync'); 

// sassコンパイル
gulp.task('sass', (done) => {
    gulp.src('develop/sass/**/*.scss')
        .pipe(sass({
                    outputStyle: 'expanded'
                })
            )
        .on("error", sass.logError)
        .pipe(gulp.dest('develop/css'));
    done();
});

// リロードするhtml
gulp.task('browser-sync', (done) => {
    browserSync.init({
        server : {
            baseDir : './',
            routes: { "/develop": "./" }, // 追加
        },
        startPath: "/develop",
        notify: false, 
    });
    done();
});

// リロード設定
gulp.task('browser-reload', (done) => {
    browserSync.reload();
    done();
});

// 監視ファイル
gulp.task('watch-files', (done) =>  {
    gulp.watch("develop/*.html", gulp.task('browser-reload'));
    gulp.watch("develop/css", gulp.task('browser-reload'));
    gulp.watch("develop/sass/**/*.scss", gulp.task('sass'));
    done();
});

// タスク実行
gulp.task('default', gulp.series( gulp.parallel('watch-files', 'browser-sync', 'sass'), (done) => {
    done();
}));

手動で更新は圧倒的に手間なわけではないですが、保存するたびにリロードしてくれるのは便利ですね。ちょっとした手間を省いてくれます。

0%