コンテンツにスキップ

Gulp

出典: フリー教科書『ウィキブックス(Wikibooks)』

はじめに

[編集]

Gulpとは

[編集]

Gulpは、ウェブ開発におけるタスク自動化ツールで、反復的な作業を効率化するためのストリーミングビルドシステムです。JavaScriptNode.js)ベースのツールで、ファイルの変換、最適化、リロードなどの処理を自動化できます。

インストールと基本セットアップ

[編集]

グローバルおよびローカルインストール

[編集]

Gulpをプロジェクトにインストールするには、以下のコマンドを実行します:

# グローバルCLIのインストール
npm install -g gulp-cli

# プロジェクト内のローカルインストール
npm install gulp --save-dev

初期設定

[編集]

プロジェクトルートに gulpfile.js を作成し、基本的なタスクを定義します:

gulpfile.js
const gulp = require('gulp');

// 簡単なタスクの定義
gulp.task('default', function(done) {
  console.log('Gulpタスクが実行されました');
  done();
});

中核的な概念

[編集]

タスク定義

[編集]

Gulpではタスクを簡単に定義できます:

// 同期タスク
gulp.task('sync-task', function() {
  return gulp.src('src/*.js')
    .pipe(gulp.dest('dist/'));
});

// 非同期タスク
gulp.task('async-task', function(done) {
  // 非同期処理
  setTimeout(function() {
    console.log('非同期タスク完了');
    done();
  }, 1000);
});

ストリーム処理

[編集]

Gulpの特徴的な機能であるストリーム処理:

const uglify = require('gulp-uglify');
const concat = require('gulp-concat');

gulp.task('scripts', function() {
  return gulp.src('src/**/*.js')
    .pipe(concat('all.js'))      // ファイル結合
    .pipe(uglify())              // JavaScript圧縮
    .pipe(gulp.dest('dist/'));   // 出力
});

主要プラグイン

[編集]

よく使われるGulpプラグイン

[編集]
  • gulp-sass: Sassのコンパイル
  • gulp-uglify: JavaScriptの圧縮
  • gulp-concat: ファイルの結合
  • browser-sync: ブラウザ自動リロード

プラグインの使用例

[編集]
const sass = require('gulp-sass')(require('sass'));
const browserSync = require('browser-sync').create();

gulp.task('sass', function() {
  return gulp.src('src/scss/**/*.scss')
    .pipe(sass().on('error', sass.logError))
    .pipe(gulp.dest('dist/css'))
    .pipe(browserSync.stream());
});

ウォッチタスク

[編集]

ファイル変更の監視

[編集]

ファイルの変更を自動的に検出し、対応するタスクを実行:

gulp.task('watch', function() {
  gulp.watch('src/scss/**/*.scss', gulp.series('sass'));
  gulp.watch('src/js/**/*.js', gulp.series('scripts'));
});

高度な設定

[編集]

モダンな設定方法

[編集]

Gulp 4.x以降の推奨される記述方法:

const { src, dest, series, parallel } = require('gulp');

function cleanTask() {
  return del(['dist']);
}

function stylesTask() {
  return src('src/styles/**/*.css')
    .pipe(concat('styles.css'))
    .pipe(dest('dist/css'));
}

exports.default = series(cleanTask, stylesTask);
exports.dev = parallel(stylesTask, watchTask);

トラブルシューティング

[編集]

一般的な問題と解決策

[編集]
  • 依存関係エラー: Node.jsとnpmのバージョンを確認
  • プラグインの互換性: 最新のGulpバージョンに対応したプラグインを使用
  • パフォーマンス: 不要なプラグインを削除し、タスクを最適化

結論

[編集]

Gulpは強力で柔軟なタスク自動化ツールです。学習曲線は緩やかで、ウェブ開発のワークフローを大幅に改善できます。継続的な学習と実践をおすすめします。

参考リソース

[編集]