19
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

gulpでwebpackを使う

Last updated at Posted at 2015-09-21

gulpwebpackを使って、Web開発で使用するモジュールを管理してみます。

インストール

まずはgulpとwebpackのインストールします。WebPackはコマンドを使うことがあればグローバルにインストールする必要があるけれども、今回はgulpを使うのでグローバルにはインストールしていません。

package.jsを作成してプロジェクトを追加、ついでにその他必要になるパッケージもインストールしておきます。

npm install gulp webpack-stream gulp-load-plugins --save

loaderを使えばJadeやBabel、CoffeeScriptの変換もできます。

gulpfile.js

このサイトの作成時に使用しているgulpfile.jsの一部です。

'use strict';

var gulp = require('gulp');
var objectAssign = require('object-assign');
var webpack = require('webpack-stream');
var $ = require('gulp-load-plugins')();

var watch = false;

gulp.task('build:js', function() {
  var src = 'src/scripts/main.js';
  var dist = 'tmp/scripts/';
  var config = {
    output: {
      filename: '[name].js'
    },
    module: {
      loaders: [
        {
          test: /\.jade$/,
          loader: 'jade'
        }
      ]
    },
  };

  if(watch) {
    config = objectAssign(config, {
      watch: true,
      devtool: '#inline-source-map'
    });

    return gulp.src(src)
      .pipe(webpack(config))
      .pipe(gulp.dest(dist));
  } else {
    return gulp.src(src)
      .pipe(webpack(config))
      .pipe(gulp.dest(dist));
  }
});

gulp.task('watch:js', function(cb) {
  watch = true;

  runSequence('build:js', cb);
});

webpackは機能自体は多くてちょっととっつきにくさはあるけれど、そのぶんgulpfile.jsはbrowserifyを使ったときよりもだいぶシンプルになります。監視用のタスクはとくにそうだとおもう。

browserifyとの使い分け

webpackで便利だと感じるのはbrowserifyやwatchifyなどのvinylを扱った大量のコードでの表現をwebpackでは簡単な記述で実現できるところが楽で好き。基本的に監視タスクが必要になる場合には何も考えずにwebpackを使っています。

参照文献

19
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?