2016/03/18更新

[フロントエンド] gulpからBrowserifyを利用する、watchでコンパイルする

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
前回の[フロントエンド] nodeモジュール管理がフロントで使えるBrowserifyに入門に引き続き、今日はgulpからBrowserifyを利用する方法をブログに書きたいと思います。

画像


目次




gulpなど準備

まずはgulpから利用するためのnpmパッケージなどの準備を行います。まずはpackage.jsonを作成して、依存モジュールを記録できる状態にします。
$ npm init
# 色々と聞かれるけどエンターを連打すればok
上記を実行したディレクトリにpackage.jsonが生成されます。このファイルを作って、利用するモジュールの情報をここに記載することで、別の環境を構築する場合にnpm installを実行するだけで全ての利用モジュールをインストールすることができ、とても便利です。

次に必要なモジュールをインストールします。今回はgulpbrowserifyvinyl-source-streamをインストールします。
$ npm install --save-dev gulp
$ npm install --save-dev browserify
$ npm install --save-dev vinyl-source-stream
上記のインストールで--save-devと記述することで、開発用の(=コンパイルタスク用の)依存モジュールである旨が、以下のようにpackage.jsondevDependenciesに追記されます。
// package.json
{
  "name": "gulp-browserify-sample",
  "version": "0.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "gulp": "~3.9.1",
    "vinyl-source-stream": "~1.1.0",
    "browserify": "~13.0.0"
  }
}
これでモジュールのインストールは完了です。



gulpfile.jsを作成する

次にgulpでビルドするために、gulpfile.jsを作成します。内容としては簡単で以下のように作成します。
// gulpfile.js
var gulp       = require('gulp');
var browserify = require('browserify');
var source     = require('vinyl-source-stream');

// browserify and gulp.
gulp.task('browserify', function () {
    return browserify('./main.js')
            .bundle()
            .pipe(source('bundle.js'))
            .pipe(gulp.dest('./dist/'));
});
上記を実装後に、以下のコマンドを実行することで、gulp経由でBrowserifyを実行することができます。
$ gulp browserify
[13:15:20] Using gulpfile ~/tmp/gulpfile.js
[13:15:20] Starting 'browserify'...
[13:15:20] Finished 'browserify' after 58 ms
これでgulpの他の様々なタスクと組み合わせることができるようになりました!



gulpのwatchタスクでbrowserifyを行う

上記でbrowserifyというgulpタスクを定義できましたので、以下のようにすることでwatchで使うことができます。
// gulpfile.js
gulp.task('watch', function () {
    gulp.watch(['./*.js'], ['browserify']);
});
そして、以下のコマンドでwatchすることができます。
$ gulp watch
watchタスクでは、監視対象ファイルと、それが変更された時に実行する処理を定義することで、ファイルを保存するたびにビルドを行うことができます。開発を行う上で、開発効率化のために重要な機能です。



参考資料

gulpとbrowserifyについては、それぞれ以下のブログを書いていますので、参考になれば幸いです。

[フロントエンド] nodeモジュール管理がフロントで使えるBrowserifyに入門

[JavaScript] Gruntの後発のフロントエンドビルドツール、gulpに入門



最後に

本日はgulp経由でBrowserifyを利用する方法をブログに書きました。フロントエンドのビルドツールと言えばgulpという感じが最近あるので、それに組み込めることはかなり素敵です。gulpもちょくちょく使っているので、今後も色々とブログを書けたらと思います。

本ブログでは、フロントエンド・Python・機械学習を中心に発信していきます。気になった方はぜひ、本ブログのRSSTwitterをフォローして頂けると幸いです ^ ^。

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

[取り組み] フロントエンドでコーディングスピードをアップさせる6つの方法!と思って書いてたら30個も書いちゃった。
[フロントエンド] フロントエンドの入社試験99問!難しいですよ〜w。
[フロントエンド] Webページを表示するテストの際に、通信速度を3Gに制限して表示してみよう
[フロントエンド] スマホ実機でのデバッグ手段を増やす!Macのプロキシを利用して、通信内容を確認する。
[フロントエンド] Chrome 35 Beta の変更点。Touch制御、新しいJavaScript機能、プレフィックスなしのShadowDOM
[フロントエンド]複数アカウントでのテストには、Chromeのユーザー管理を使って、Cookieを切り替えると便利
[フロントエンド] Chrome36βが出た。変更点など。element.animate、HTML Imports、Object.observe、他。
RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。