【gulp4】gulp入門 使い方を学ぼう② – srcとdest – windows10版

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

はじめに

前回はgulpfile.jsに関数を定義してコマンドで実行するところまで説明しました。

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

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

プラグインはまだ使いませんが、ここからgulpの機能をどんどん使っていくので気になる方は参考にしてください。

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

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

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

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

それではgulpの使い方に移ります。

スポンサーリンク

事前準備

事前準備としてdistフォルダとsrcフォルダを作成しましょう。

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

test
├ node_modules
├ dist
├ src
│ └ index.html
├ gulpfile.js
├ package-lock.json
└ package.json

srcフォルダ:編集用。自分でプログラムを編集するためのフォルダ

distフォルダ:リリース用。ファイルの圧縮や結合した後のファイル群。直接編集しない。

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

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

スポンサーリンク

gulpfile.jsを編集する

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

コメントを多めに記述しているのでコードだけじゃ分からないという方は参考にしてください。

//----------------------------------------------------------------------
//  モード
//----------------------------------------------------------------------
//  strictモードで実行
"use strict";

//----------------------------------------------------------------------
//  モジュール読み込み
//----------------------------------------------------------------------
// gulpのモジュール読み込み方法は2通り (どちらか記述すれば大丈夫)
const gulp = require("gulp");
const { src, dest, series, parallel, watch } = require("gulp");

//----------------------------------------------------------------------
//  関数定義
//----------------------------------------------------------------------
// function 関数名(コールバック関数名) {
//   src("処理させたいファイル(またはフォルダ)を指定")
//   .pipe(指定ファイルを処理1)
//   .pipe(指定ファイルを処理2)
//   .pipe(指定ファイルを処理3)
//   ・
//   ・
//   ・
//   .pipe(dest("処理後ファイル(またはフォルダ)の出力先を指定"));
//
//   コールバック関数名();
// }

function copy(done) {
  src("./src/index.html")
  .pipe(dest("./dist/"));

  done();
}

//----------------------------------------------------------------------
//  タスク定義
//----------------------------------------------------------------------
// exports.コマンド名 = 関数名;
exports.copy = copy;

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

フォルダの構成やgulpの記述についてはこちらを参考にさせていただいています。

非常に分かりやすいです。

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

モジュール読み込み

//----------------------------------------------------------------------
//  モジュール読み込み
//----------------------------------------------------------------------
// gulpのモジュール読み込み方法は2通り (どちらか記述すれば大丈夫)
const gulp = require("gulp");
const { src, dest, series, parallel, watch } = require("gulp");

gulpのモジュール読み込みをしています。

コメント中にも記載していますが、読み込みはどちらか1つ記述すれば問題ありません。

読み込みの違いによって下記のように記述の仕方が変わります。

const gulp = require("gulp");

function aaa(done){
  gulp.src(...)
  .pipe(gulp.dest(...));

  done();
}
const { src, dest, series, parallel, watch } = require("gulp");

function aaa(done){
  src(...)                  // gulp. を省略できる
  .pipe(dest(...));         // gulp. を省略できる

  done();
}

後者の読み込み方法の方がコードが簡潔で見通しが良くなりますね。

モジュール読み込みを2つとも記述した場合はどちらのパターンでも記述できます。

関数定義

//----------------------------------------------------------------------
//  関数定義
//----------------------------------------------------------------------
// function 関数名(コールバック関数名) {
//   src("処理させたいファイル(またはフォルダ)を指定")
//   .pipe(指定ファイルを処理1)
//   .pipe(指定ファイルを処理2)
//   .pipe(指定ファイルを処理3)
//   ・
//   ・
//   ・
//   .pipe(dest("処理後ファイル(またはフォルダ)の出力先を指定"));
//
//   コールバック関数名();
// }

function copy(done) {
  src("./src/index.html")
  .pipe(dest("./dist/"));

  done();
}

ファイルをコピーするためのcopy 関数を作成しました。

コピーさせたいファイルやフォルダをsrc()の中に指定しましょう。

出力先をdest()の中に指定しましょう。

./src/index.html としていますが、./src/*.html とワイルドカードを使っての指定も可能です。

タスク定義

//----------------------------------------------------------------------
//  タスク定義
//----------------------------------------------------------------------
// exports.コマンド名 = 関数名;
exports.copy = copy;

コマンド名を「copy」としました。

スポンサーリンク

コマンドを実行しよう

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

npx gulp copy

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

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

以下のようにdistフォルダにindex.htmlが作成されていれば正しく動作しています。

test
├ node_modules
├ dist
│ └ index.html(追加)
├ src
│ └ index.html
├ gulpfile.js
├ package-lock.json
└ package.json
スポンサーリンク

おわりに

以上gulpのsrcとdestという機能を使ってファイルのコピーをコマンドで実行するところまで説明しました。

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

今回はプラグインを使っていませんが、プラグインを使ってコピーする前にファイルの圧縮や結合をすることでgulp本来の実力を発揮することができます。

次回gulpのseriesとparallelという機能を使って複数タスク実行する方法について説明していきます。

コメント

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