SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

HTML/JavaScript開発作業を効率化する便利ツールの活用

JavaScriptタスク自動化ツールgulpのAPI説明と実践的な利用例

HTML/JavaScript開発作業を効率化する便利ツールの活用 第6回

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

タスクの入力と出力を指定するsrcとdest

 gulpのタスクでは、あるファイルを読み込んで複数の処理を連続的に行い、結果を別のファイルに書き出すといったことが行われます。この時に読み込み元を指定するのがsrcメソッド、書き出し先を指定するのがdestメソッドです。基本的な記述形式をリスト6に示します。srcメソッド(1)で指定したファイルに対して処理1、処理2を順に適用して、結果をdestメソッド(2)で指定したファイルに書き込みます。srcメソッド、処理内容、destメソッドはpipeメソッドを利用してメソッドチェーン型式で記述できます。このように一連の処理を流れ(ストリーム)として記述できるのは「ストリーミングビルドシステム」であるgulpの特徴といえます。

リスト6 src/destメソッドによるファイル読み込みと書き出しの指定
gulp.task("default", function() {
    return gulp.src("js_src/*.js") // srcメソッド  ...(1)
        .pipe( /* 処理1 */ )       //
        .pipe( /* 処理2 */ )       //
        .pipe(gulp.dest("js"));    // destメソッド ...(2)
});

 srcメソッド、destメソッドの引数にはそれぞれファイルの入力元、出力先のパスを指定します。destメソッドの引数はパスを1個だけ指定できますが、srcメソッドの引数は文字列の単数指定または配列による複数指定の両方が可能です。またワイルドカードによる指定や、先頭に「!」をつけて対象から明示的に除外することもできます。例えばリスト7はfolder1配下の拡張子txtのファイルを対象としつつ、ファイル名が「test」から始まるファイルを除外するsrcメソッドの指定例です。

リスト7 srcメソッドの対象ファイル指定
gulp.src(["!folder1/test*", "folder1/*.txt"])

 srcメソッド、destメソッドの第2引数にはJavaScriptオブジェクトでオプションを指定できます。

リスト8 srcメソッドにbufferオプションを設定する例
gulp.src("folder1/*.txt", {"buffer" : false})

 srcメソッドのオプションとその意味を表1に示します。

表1 srcメソッドのオプション
名称 意味 デフォルト値
buffer bufferにファイル全体を格納してタスク処理に渡す true
read タスク処理にファイル内容を渡す true
base タスク処理対象のベースフォルダ (指定なし)

 bufferオプションをfalseに設定すると、ファイル内容を順次読みだすstreamとしてタスク処理に受け渡します。なおプラグインによってはbuffer=falseの設定(streamの処理)に対応しない場合があります。readオプションをfalseにするとファイル内容がタスク処理に渡されません。baseオプションにベースフォルダを指定すると、処理結果が指定フォルダ配下のフォルダ構成を維持しながら出力されます。

 一方、destメソッドに指定できるオプションとその意味を表2に示します。

表2 destメソッドのオプション
名称 意味 デフォルト値
cwd ワーキングフォルダ process.cwd()(コマンドを実行したフォルダ)
mode フォルダのパーミッション 0777(誰でも読み/書き/実行可能)

ファイルの変更を監視するwatch

 gulpにファイル変更を監視させるにはwatchメソッドを利用します。変更監視はGruntではプラグイン(contrib-watch)で実現しますが、gulpでは本体の機能として提供されています。リスト9のように記述すると、第1引数で指定されたファイルが変更されるたびに第2引数のタスク(task1とtask2)が実行されます。

リスト9 ファイル変更時にタスクを実行するwatchメソッド記述
gulp.watch("js_src/*.js", ["task1","task2"]);

 またリスト10のように、第2引数にタスクの代わりに処理内容を直接指定することもできます。

リスト10 ファイル変更時に実行する処理をJavaScriptで指定する記述
gulp.watch("js_src/*.js", function(){/* 処理 */});

次のページ
変更監視と複数タスク実行を組み合わせたgulp利用の実践

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
HTML/JavaScript開発作業を効率化する便利ツールの活用連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト  吉川 英一(ヨシカワ エイイチ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9244 2016/02/24 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング