Gulp

Gulpでファイルコピーをする方法

こちらの記事ではタスクランナーのGulpを使ってファイルをコピーする方法について解説します。

Gulpでファイルコピーのタスクを作ることで、無駄な手作業をせずにファイルをコピーすることができるのでオススメです。

先輩くん
先輩くん
下記の記事でGulpのインストール方法について解説しています。
Gulpのインストールをまだしていない人はぜひ参考にしてください!

空き時間で稼げる副業
自分のスキルを活かして副収入を得よう!
ココナラ

先輩くん
先輩くん
土日の空き時間で始められる副業におすすめだよ!
後輩ちゃん
後輩ちゃん
エンジニアではない方でも受けられる仕事が沢山あるよ!
公式ホームページはこちら

最短3ヶ月でエンジニアになれる!?
転職成功率98%のプログラミングスクール
DMM WEB CAMP

先輩くん
先輩くん
オンライン完結で24時間どこでも学習することができるよ!
後輩ちゃん
後輩ちゃん
未経験から憧れのエンジニアになるぞ〜!!
簡単30秒で無料相談申し込み

ディレクトリ構造

今回使用するサンプルコードでは以下のようなディレクトリ構造で正しくGulpが実行できます。
sample
  |- assets
  |     |- index.html
  |     |- test.html
  |     |- style.css
  |     |- js
  |        |- index.js
  |- dist
  |- gulpfile.js

今回のサンプルコードでは、コピーしたファイルはdistディレクトリ内に格納されます。

プロジェクトによってディレクトリ名や構造が違うと思いますので、各々でカスタマイズしてください。

一つのファイルをコピーする方法

1つのファイルをコピーする場合は、srcで指定するファイル名を記述します。
const {src, dest} = require('gulp');

function copyFiles(){
    return src('./assets/index.html')
        .pipe(dest('./dist'));
}

exports.copyFiles = copyFiles;

上記のサンプルコードでは、assetsディレクトリ内のindex.htmlファイルがdistディレクトリ内にコピーされます。

複数のファイルをコピーする方法

複数のファイルをコピーする方法は複数あるため、見出しを分けて解説します。

配列を使う方法

1つ目の方法は、配列を使った方法になります。

srcで指定するファイルを配列指定することで、複数のファイルをコピーすることができます。
const {src, dest} = require('gulp');

function copyFiles(){
    return src(['./assets/index.html', './assets/test.html'])
        .pipe(dest('./dist'));
}

exports.copyFiles = copyFiles;
上記のサンプルコードでは、assetsディレクトリ内のindex.htmlファイルとtest.htmlがdistディレクトリ内にコピーされます。

配列を使った方法では、コピーしたいファイルが追加されたらgulpfile.jsを書き換える必要があったり、コピーしたファイルが膨大な量になるとコードの可読性が低くなるデメリットがあります。

ワイルドカードを使う方法

2つ目の方法は、ワイルドカードを使った方法になります。 ワイルドカードを使うことで、配列を使った方法で取り上げたデメリットを無くすことができます。
const {src, dest} = require('gulp');

function copyFiles(){
    return src('./assets/*')
        .pipe(dest('./dist'));
}

exports.copyFiles = copyFiles;

上記のサンプルコードでは、assetsディレクトリ内の全てのファイルがdistディレクトリ内にコピーされます。

特定のファイルのみコピーする方法

3つ目の方法は、ワイルドカードとファイルの拡張子を指定する方法です。

この方法を使うことで、指定したディレクトリ内にある特定のファイルのみコピーすることができます。
const {src, dest} = require('gulp');

function copyFiles(){
    return src('./assets/*.html')
        .pipe(dest('./dist'));
}

exports.copyFiles = copyFiles;

上記のサンプルコードでは、assetsディレクトリ内にあるファイル拡張子が.htmlのみdistディレクトリ内にコピーされます。

ディレクトリ構造を維持したままコピーする方法

ディレクトリ構造を維持したままコピーする場合は、srcで指定するファイル箇所に**を記述します。
const {src, dest} = require('gulp');

function copyFiles(){
    return src('./assets/**')
        .pipe(dest('./dist'));
}

exports.copyFiles = copyFiles;

上記のサンプルコードでは、assetsディレクトリ内にある全てのファイルとディレクトリをdistディレクトリ内にコピーします。

まとめ

今回はGulpを使ったファイルをコピーする方法について解説しました。

重要なポイントを忘れないようおさらいを兼ねて下記にまとめました。

ここにタイトルを入力

  • src(gulp.src)にコピーしたいファイルを指定する
  • dest(gulp.dest)にコピー先を指定する

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村