sou5534
6/23/2017 - 4:11 AM

Gulpテンプレ

Gulpテンプレ

cdでフォルダに移動

フォルダ階層
root
├ index.html
├ css
├ scss
├ images
├ js
├ gulpfile.js
├ package.json
└ config.rb

コマンドに以下
=============================
npm install -g gulp
=============================
npm install
=============================
{
  "name": "hoge",
  "version": "1.0.0",
  "description": "hoge",
  "main": "index.js",
  "devDependencies": {
    "gulp": "^3.8.9",
    "gulp-autoprefixer": "^1.0.1",
    "gulp-compass": "^2.1.0",
    "gulp-imagemin": "^1.2.1",
    "gulp-plumber": "^0.6.6",
   // "gulp-webserver": "^0.8.6",
    "browser-sync": "^2.18.13",
    "imagemin-pngquant": "^4.0.0"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "hoge",
  "license": "ISC"
}
'use strict';

// ディレクトリ
var path = {
  'imgPath': 'images', // 例)'htdocs/images'
  'sassPath': 'scss', // 例)'htdocs/scss'
  'cssPath': 'css', // 例)'htdocs/stylesheets'
  'jsPath': 'js' // 例)'htdocs/javascripts'
}

// 使用パッケージ
var gulp = require('gulp');
//var webserver = require('gulp-webserver'); // ローカルサーバ起動 
var browserSync = require('browser-sync').create(); 
var compass = require('gulp-compass'); // Sassコンパイル
var autoprefixer = require('gulp-autoprefixer'); // ベンダープレフィックス付与
var imagemin = require('gulp-imagemin'); // 画像圧縮
var pngquant = require('imagemin-pngquant'); // 画像圧縮
var plumber = require('gulp-plumber'); // コンパイルエラーが出てもwatchを止めない

//ローカルサーバー保留
gulp.task('webserver', function(){
  gulp.src('./') // ルート・ディレクトリ
    .pipe(webserver({
      livereload: true,
      directoryListing: false,
      open: true,
      port: 8000
    }));
});

//ブラウザ同期
gulp.task('browser-sync', function() {
    browserSync.init({
        server: {
            baseDir: "./",
            index: "./index.html"
        }
    });
});

gulp.task('bs-reload', function () {
    browserSync.reload();
})

// Sassをコンパイルし、ベンダープレフィックスを付与
gulp.task('compass', function(){
  gulp.src(path.sassPath + '/**/*.scss')
    .pipe(plumber())
    .pipe(compass({
      config_file: 'config.rb',
      sass: path.sassPath,
      css: path.cssPath,
      image: path.imgPath
    }))
    .pipe(autoprefixer('last 2 version', 'ie 8', 'ie 7'))
    .pipe(gulp.dest(path.cssPath + '/'))
});



// 画像圧縮
gulp.task('imagemin', function(){
  gulp.src(path.imgPath + '/*')
    .pipe(plumber())
    .pipe(imagemin({
        progressive: true,
        svgoPlugins: [{removeViewBox: false}],
        use: [pngquant()]
    }))
    .pipe(gulp.dest(path.imgPath + '/'));
});

// ファイル変更監視
gulp.task('watch', function() {
  gulp.watch(path.sassPath + '/**/*.scss', function(event){
    gulp.run('compass')
  });
});

// タスク実行
gulp.task('default', ['browser-sync','compass','watch']); // デフォルト実行