ファイル削除にはgulpプラグインを使わない

  • 196
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

要約

rimrafdelを使用しましょう。

はじめに

gulp.jsにおいて、かつてはファイル削除のためのプラグインとしてgulp-rimrafgulp-cleanが存在しましたが、どちらもdeprecateされました。gulp.srcを用いない、ファイル削除以外の余分な処理を行わない手段を用いれば、これらのプラグインを使用する必要はありません。

単一のファイル/ディレクトリを削除する

rimrafを使用します。従来より、gulp-rimrafの作者が推奨している方法です。

var rimraf = require('rimraf');

gulp.task('clean', function (cb) {
  rimraf('./dir', cb);
});

gulp.task('build', ['clean'], function() {
  // Something
});

プラグインを使って以下のように書く必要はありません。

// !!! DEPRECATED WAY !!!
gulp.task('clean', function() {
  return gulp.src('./dir', {read: false})
    .pipe(rimraf());
});

複数のファイル/ディレクトリを削除する

delを使用します。rimrafとの違いは、gulp.srcと同様に対象ファイルの指定にglobパターンを使用でき、しかも配列を用いて複数のパターンを指定できることです。
rimrafと同じように、第二引数(オプションを第二引数に渡す場合は第三引数)にコールバック関数を渡して使用します。

var del = require('del');

gulp.task('clean', function(cb) {
  del(['dist', 'tmp', '**/*.log'], cb);
});

gulp.task('build', ['clean'], function() {
  // Something
});

GoogleのWeb Starter Kitでは、bindを用いてより簡潔に記述しています

gulp.task('clean', del.bind(null, ['.tmp', 'dist']));

Google Web Starter KitのGithubリポジトリより

複数ファイルを対象とする場合も同様に、プラグインは必要ありません。

// !!! DEPRECATED WAY !!!
gulp.task('clean', function(cb) {
  gulp.src(['dist', 'tmp', '**/*.log'], {read: false})
    .pipe(rimraf());
});

まとめ

単純なファイル削除のためにgulpプラグインを使う必要はありません。ファイル削除のほかにも、gulpのファイルシステムを用いる必要が無いと思われるものは、一見、そのような場合に利用できそうな便利なgulpプラグインがあったとしても、プラグインを用いずにタスクを作成することを検討してみましょう。

補足

(2014/12/02 追記)

gulpのリポジトリファイル削除に関するドキュメントが掲載されています。そちらもご覧ください。