Node.js,Express環境でAurelia.jsを動かしてみる–その5
Node.js,Express環境でAurelia.jsを動かしてみる–その1
Node.js,Express環境でAurelia.jsを動かしてみる–その2
Node.js,Express環境でAurelia.jsを動かしてみる–その3
Node.js,Express環境でAurelia.jsを動かしてみる–その4
Aurelia.js
のパッケージのローカル環境はBrowserSync
を使用してソースの変更をブラウザのリロードを手動で実行すること無しで即時確認できるように整えられています。
今回はAurelia
のgulp
とBrowserSync
の環境にexpress
の変更も監視してみたいと思います。
同様なことやってる人がいないかなと検索してみたら下記サイトがあったので参考にさせていただきました。
⇒参考gulp + node + express で BrowserSync 使おう
サーバの変化をチェックするためにgulp-nodemonを入れる
まずはexpress
等に変更があった際にサーバを再起動してくれるgulp-nodemon
を入れます。
⇒参考https://www.npmjs.com/package/gulp-nodemon
npm install --save-dev gulp-nodemon
nodemonのタスクを作る
gulp watch
を実行したときに読み込まれるserve.js
にnodemon
のタスクを追加してbrowsersync
起動時に一緒に実行するようにします。
今回実装後のserve.js
var gulp = require('gulp'); var runSequence = require('run-sequence'); var nodemon = require('gulp-nodemon'); var browserSync = require('browser-sync'); function reload() { browserSync.reload({ stream: false }); }; // this task utilizes the browsersync plugin // to create a dev server instance // at http://localhost:9000 gulp.task('browsersync', function() { browserSync({ online: false, open: false, proxy: 'http://localhost:5000', port: 9000 }); }); gulp.task('nodemon', function () { nodemon({ script: 'app.js', ext: 'js html css', ignore: [ 'build', 'dist', 'doc', 'jspm_packages', 'node_modules', 'src', 'styles', 'test' ], env: { 'NODE_ENV': 'development' } }).on('restart', function() { reload(); }); }); gulp.task('serve', function(callback) { return runSequence( 'build', 'browsersync', 'nodemon', callback ); });
上記を分解してちょっとづつ解説します。
var runSequence = require('run-sequence'); var nodemon = require('gulp-nodemon');
今回はタスクの実行順序をranSequence
を使用します。なのでgulp-nodemon
とあわせてrequire
で読み込みます。
gulp.task('browsersync', function() { browserSync({ online: false, open: false, proxy: 'http://localhost:5000', port: 9000 }); });
browserSync
の設定をproxyサーバを読むように設定します。
app.js
が実行されると立ち上がるport
は5000に今回は設定しています。
browserSync
が使用するportを指定。
server
optionはproxy
と同時に使用できないので削除します。
gulp.task('nodemon', function () { nodemon({ script: 'app.js', ext: 'js html css', ignore: [ 'build', 'dist', 'doc', 'jspm_packages', 'node_modules', 'src', 'styles', 'test' ], env: { 'NODE_ENV': 'development' } }).on('restart', function() { reload(); }); });
nodemon
で指定されているファイルの変更を監視します。
サーバが再起動されrestart
したときにreload();
が実行されるようになっています。
今回作成しているAurelia skeleton navigationの構成で作成しています。
optionについて
⇒参考http://nodemon.io/
- script
- 起動ファイル(express-generatorを使っていると起動ファイルの場所がbin/wwwになります)
- ext
- 監視するファイルの種類
- ignore
- 無視するファイル
runSequence
を使用して、serve
タスクが実行された際のタスク実行順を定義しています。
gulp.task('serve', function(callback) { return runSequence( 'build', 'browsersync', 'nodemon', callback ); });
gulp watchを実行してみる
gulp watch
実行するとapp.js
が起動するようになります。
ためしにconsole.log
で出力しているExample app listeningの文字を変更してみると変更保存後サーバが再起動されブラウザがリロードされるのが確認できると思います。
gulp bundle
されているとbundleされたjsとhtmlを参照するので変更が反映しないので、作業するときは
gulp unbundle
で作業ファイルを直接読むようにしてから作業する。※unbundleされた状態でsrcフォルダのjsやhtmlを変更して作業します。