【gulp4】gulp入門 使い方を学ぼう③ – seriesとparallel – windows10版

html/css
この記事は約8分で読めます。
スポンサーリンク

はじめに

前回はgulpのsrcとdistの機能を使ってファイルのコピーをコマンドで実行するところまで説明しました。

まだの方はこちらを参照してください。

今回はgulpのseriesとparallelという機能を使って複数タスクを実行させるところまで説明していきます。

対象者
  • gulpの環境構築ができている方
  • gulpに興味がある方

その他gulpのおすすめのプラグインはこちら

gulpの使い方まとめについてはこちら。

gulpfile.jsのテンプレート紹介についてはこちら。

それではseriesとparallelの使い方に移ります。

スポンサーリンク

seriesとparallelとは

seriesとparallelはどちらも複数のタスクを実行をする際に使用します。

それぞれの違いは以下になります。

series

処理順序順次実行型
メリット指定した順番にタスクを実行することができる。
デメリット「parallel」よりも処理時間が掛かる。

parallel

処理順序並列実行型
メリット複数のタスクを同時に実行できるので処理時間が早くなる。
デメリット実行順序が決まっているタスクに対して使用するとエラーが出る可能性がある。

使い始めはそこまで処理時間にこだわらなくてもいいです。

どちらを使えばいいか分からない場合は、seriesを使うのが無難です。

スポンサーリンク

ディレクトリ構成

基本的には前回のディレクトリ構成と同じになります。

またsrcフォルダの中にindex1.html index2.html index3.html を作成します。

test
├ node_modules
├ dist
├ src
│ ├ index1.html
│ ├ index2.html
│ └ index3.html
├ gulpfile.js
├ package-lock.json
└ package.json

今回のゴールは以下です。

gulpのコマンドを実行してdistフォルダの中にsrcフォルダindex1.html index2.html index3.html をコピーする

スポンサーリンク

gulpfile.jsを編集する

まずは完成形を記載しておきます。

//----------------------------------------------------------------------
//  モード
//----------------------------------------------------------------------
"use strict";

//----------------------------------------------------------------------
//  モジュール読み込み
//----------------------------------------------------------------------
const gulp = require("gulp");
const { src, dest, series, parallel, watch } = require("gulp");

//----------------------------------------------------------------------
//  関数定義
//----------------------------------------------------------------------
function copy1(done) {
  src("./src/index1.html")
  .pipe(dest("./dist/"));

  done();
}

function copy2(done) {
  src("./src/index2.html")
  .pipe(dest("./dist/"));

  done();
}

function copy3(done) {
  src("./src/index3.html")
  .pipe(dest("./dist/"));

  done();
}

//----------------------------------------------------------------------
//  タスク定義
//----------------------------------------------------------------------
exports.copy_series = series(copy1,copy2,copy3);
exports.copy_parallel = parallel(copy1,copy2,copy3);

/************************************************************************/
/*  END OF FILE                                                         */
/************************************************************************/

それではセクションごとに説明していきます。

関数定義

//----------------------------------------------------------------------
//  関数定義
//----------------------------------------------------------------------
function copy1(done) {
  src("./src/index1.html")
  .pipe(dest("./dist/"));

  done();
}

function copy2(done) {
  src("./src/index2.html")
  .pipe(dest("./dist/"));

  done();
}

function copy3(done) {
  src("./src/index3.html")
  .pipe(dest("./dist/"));

  done();
}

関数の定義をしています。

念のためそれぞれの関数の処理内容を以下にまとめておきます。

関数名処理内容
copy1index1.htmlをdistフォルダへコピー
copy2index2.htmlをdistフォルダへコピー
copy3index3.htmlをdistフォルダへコピー

タスク定義

//----------------------------------------------------------------------
//  タスク定義
//----------------------------------------------------------------------
exports.copy_series = series(copy1,copy2,copy3);
exports.copy_parallel = parallel(copy1,copy2,copy3);

seriesで実行するコマンドを「copy_series」、parallelで実行するコマンドを「copy_parallel」としました。

タスクはseriesもしくはprallelの中にカンマ区切りで順番に記述していきましょう。

スポンサーリンク

コマンドを実行しよう

それではgulpでcopyコマンドを実行しましょう。

npx gulp copy_series
npx gulp copy_parallel

「npx」のコマンド使用時にエラーが出る方はこちらを参照してください。

gulpのインストール先が異なる可能性があります。

どちらも以下のようにタスクが実行されていれば正しく動作しています。

[00:00:00] Starting 'copy'...
[00:00:00] Starting 'copy1'...
[00:00:00] Finished 'copy1' after 13 ms
[00:00:00] Starting 'copy2'...
[00:00:00] Finished 'copy2' after 3.65 ms
[00:00:00] Starting 'copy3'...
[00:00:00] Finished 'copy3' after 2.21 ms
[00:00:00] Finished 'copy' after 23 ms

今回のような簡単な処理だとseriesとparallelでは差は生じにくいですね。

処理が多くなってきた場合にご自身の環境で試してみてください。

スポンサーリンク

おわりに

以上gulpのseriesとparallelという機能を使って複数コマンドを実行させるところまで説明しました。

いかがだったでしょうか。

複数タスクを実行する際はseriesかparallelどちらが適切か上手く使い分けてみましょう。

次回はwatchという機能を使ってファイルの変更を監視し、変更が検出されたらタスクを実行するやり方について説明していきます。

コメント

タイトルとURLをコピーしました