先日、Gulpを使ったES6の開発環境について下記の記事で紹介した。
browserifyを使ったリアルタイムプレビュー開発環境において、Gulpのwatchを使うよりも「watchify」を使う方が一般的だそうなので、構築した環境の設定について紹介する。
なお、ベースとなる環境は先程挙げた過去記事を参考にしてほしい。
追加プラグインのインストール
まずは以下のコマンドでwatchifyをインストールする。
npm install --save-dev watchify
gulpfile.js コード全文
gulpfile.jsに以下の設定を書き、ターミナルで「gulp」コマンドを実行するとブラウザが立ち上がる。
以後、srcフォルダ内の拡張子jsファイルを更新するたびに、jsフォルダ内にbundle.jsが出力され、立ち上がったローカルサーバーも自動的にリロードされる。
const gulp = require('gulp');
const browserify = require('browserify');
const plumber = require("gulp-plumber");
const browserSync = require('browser-sync');
const babelify = require('babelify');
const source = require('vinyl-source-stream');
const watchify = require('watchify');
//setting : paths
const paths = {
'jsSrc': './src/*.js',
'jsDist': './js/',
'jsMain': './src/main.js'
}
//gulpコマンドの省略
const { watch, series, task, src, dest, parallel } = require('gulp');
// browser-sync
task('browser-sync', () => {
return browserSync.init({
server: {
baseDir: paths.root
},
port: 8080,
reloadOnRestart: true
});
});
// browser-sync reload
task('reload', (done) => {
browserSync.reload();
done();
});
// browserify
function bundle(watching=false) {
const b = browserify({
entries: [paths.jsMain],
transform: ['babelify'],
debug: true,
plugin: (watching) ? [watchify] : null
})
.on('update', () => {
bundler();
console.log('scripts rebuild');
});
function bundler() {
return b.bundle()
.on('error', (e) => {
console.log(e.message);
})
.pipe(source('bundle.js'))
.pipe(dest(paths.jsDist));
}
return bundler();
}
task('bundle', (done) => {
bundle(true);
done();
});
//watch
task('watch', (done) => {
watch([paths.jsSrc], series('bundle', 'reload'));
done();
});
task('default', parallel('watch', 'browser-sync'));