Skip to content

Instantly share code, notes, and snippets.

@ogaaaan

ogaaaan/gulpfile.js

Last active Jan 27, 2016
Embed
What would you like to do?
gulp basic setting
/**
* 汎用Gulpfile
*
* @author Seiji Ogawa [****@****.**.**]
* @copyright ***** 2015
*/
/**
* モジュール読み込み
*/
// base
var gulp = require('gulp');
var notify = require('gulp-notify'); // デスクトップ通知
var plumber = require("gulp-plumber"); // エラー時に処理を停止させない
var rename = require('gulp-rename'); // ファイル名変更
// html
var ejs = require('gulp-ejs'); // ejsテンプレートコンパイル
// css
var compass = require('gulp-compass'); // compass+sass
var cssmin = require('gulp-cssmin'); // cssミニファイ
// js
var jshint = require('gulp-jshint'); // js構文チェック
var coffee = require('gulp-coffee'); // coffee script
var uglify = require('gulp-uglify'); // js難読化
/**
* 設定
*
*/
// 各種パス
// `AをBにする` → `a_b`というネーミングにする
var config = {
ejs_html: {
src: ['src/ejs/**/*.ejs', '!src/ejs/**/_*.ejs'],
dest: 'src/',
},
sass_css: {
src: ['src/sass/**/*.scss', '!src/sass/**/_*.scss'],
dest: 'src/css/',
compass: {
sass: 'src/sass/',
css: 'src/css/',
style: 'expanded'
}
},
css_minify: {
src: ['src/css/**/*.css', '!src/css/**/*.min.css'],
dest: 'src/css',
},
js_jshint: {
src: 'src/js/**/*.js',
},
coffee_js: {
src: ['src/coffee/**/*.coffee'],
dest: 'src/js'
},
js_uglify: {
src: ['src/js/**/*.js', '!src/js/**/*.min.js'],
dest: 'src/js',
}
};
/**
* タスク設定
*/
// ウォッチ
gulp.task('default', function() {
gulp.watch(config.ejs_html.src[0], ['ejs_html']);
gulp.watch(config.sass_css.src[0], ['sass_css']);
gulp.watch(config.coffee_js.src, ['coffee_js']);
gulp.watch(config.js_jshint.src, ['js_jshint']);
});
// リリース用タスク
gulp.task('release', [
'ejs_html',
'sass_css',
'coffee_js',
'css_minify',
'js_uglify',
'file_copy'
], function (config) {
console.log(' - DONE -');
});
// ejsをコンパイル
gulp.task('ejs_html', function () {
var conf = config.ejs_html;
return gulp.src(conf.src)
.pipe(plumber({
errorHandler: notify.onError('Error: <%= error.message %>')
}))
.pipe(ejs())
.pipe(gulp.dest(conf.dest));
});
// scssをcssにコンパイル
gulp.task('sass_css', function () {
var conf = config.sass_css;
return gulp.src(conf.src)
.pipe(plumber({
errorHandler: notify.onError('Error: <%= error.message %>')
}))
.pipe(compass({
config_file: './config.rb',
sass: conf.compass.sass,
css: conf.compass.css,
style: conf.compass.style
}))
.pipe(gulp.dest(conf.dest));
});
// cssを軽量化(Minify)
gulp.task('css_minify', function () {
var conf = config.css_minify;
return gulp.src(conf.src)
.pipe(plumber({
errorHandler: notify.onError('Error: <%= error.message %>')
}))
.pipe(cssmin())
.pipe(rename({
suffix: '.min'
}))
.pipe(gulp.dest(conf.dest));
});
// jsファイルの構文チェック
gulp.task('js_jshint', function () {
var conf = config.js_jshint;
return gulp.src(conf.src)
.pipe(plumber({
errorHandler: notify.onError('Error: <%= error.message %>')
}))
.pipe(jshint())
.pipe(jshint.reporter());
});
// coffeeをコンパイルしてjs化
gulp.task('coffee_js', function () {
var conf = config.coffee_js;
return gulp.src(conf.src)
.pipe(plumber({
errorHandler: notify.onError('Error: <%= error.message %>')
}))
.pipe(coffee())
.pipe(gulp.dest(conf.dest));
});
// jsファイルを難読化(uglify+rename)
gulp.task('js_uglify', function () {
var conf = config.js_uglify;
return gulp.src(conf.src)
.pipe(plumber({
errorHandler: notify.onError('Error: <%= error.message %>')
}))
.pipe(uglify())
.pipe(rename({
suffix: '.min'
}))
.pipe(gulp.dest(conf.dest));
});
// ファイルをコピー
gulp.task('file_copy', function() {
return gulp.src(
[ 'src/*.html', 'src/css/*.min.css', 'src/js/*.min.js', 'src/img/**' ],
{ base: 'src' }
)
.pipe(gulp.dest('dist'));
});
@ogaaaan

This comment has been minimized.

Copy link
Owner Author

@ogaaaan ogaaaan commented Jan 22, 2016

以下の構造を想定

project
├dist
│├css
│├img
│└js
└src
 ├coffee
 ├css
 ├ejs
 ├img
 │└sprite
 ├js
 └sass

gulp releaseでdistに入る仕組み。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment