tknakatsu
3/28/2016 - 10:04 AM

gulpの設定ファイル

gulpの設定ファイル

var gulp = require('gulp');

var fs = require('fs');
var watch = require('gulp-watch');
var plumber = require('gulp-plumber');
var ect = require('gulp-ect');
var connect = require('gulp-connect');
var compass = require('gulp-compass');
var hologram = require('gulp-hologram');
var browserSync = require('browser-sync');

// ファイル追加や削除の時にwatchタスクを動かせるようにパスを改めて指定
var path = require('path');
var src = './';
var relativePath = path.relative('.', src); // 追記

// css outputスタイル
var outputStyle = 'compressed';

// ect
gulp.task('ect', function(){

gulp.src(['src/ect/**/*.ect', '!src/ect/**/_*.ect'], {base: 'src/ect'})
    .pipe(plumber())
    .pipe(ect({
        data: function(file, cb) {
            var dirpath = path.dirname(file);
            var category = path.relative('src/ect/', dirpath);
            var page = path.relative(dirpath, file);
            console.log(file);
            cb ({
                filename: file,
                image_path: '/assets/img',
                category: category,
                page: page
            });
        }
    }))
    .pipe(gulp.dest('./build/'));
});

// compass
gulp.task('compass', function() {
    gulp.src('./sass/**/*.scss')
    .pipe(plumber())
    .pipe(compass({
        bundle_exec: true,
        config_file: 'config.rb',
        comments: false,
        style: outputStyle,
        sass: './sass/',
        css: './css/'
    }));
});

// hologram スタイルガイド
gulp.task('hologram', ['compass'], function() {
    var configGlob = './config.yml';
    var hologramOptions = {
        bundler: true
    }

    gulp.src( configGlob )
        .pipe(hologram( hologramOptions ));
});

// watch
gulp.task('watch', function() {
    watch([
        relativePath + './sass/**',
        relativePath + './styleguide_templates/**'
        ], function() {
        gulp.start('hologram');
    });
});

// Static server
gulp.task('browser-sync', function() {
    browserSync.init({
        server: {
            baseDir: './',
            index: 'index.html',
        },
        notify: true,
        ghostMode: {
            scroll: false
        }
    });
});

// Reload all browsers
gulp.task('bs-reload', function (){
    browserSync.reload();
});

// default task
gulp.task('default', ['watch'], function() {
    gulp.watch('./**', ['bs-reload']);
    gulp.watch('./build/assets/css/**/*.css', ['bs-reload']);
    gulp.watch('./build/assets/img/**/*.*', ['bs-reload']);
    gulp.watch('./build/assets/js/*.js', ['bs-reload']);
});