|
var gulp = require('gulp'); |
|
var source = require('vinyl-source-stream'); |
|
var browserify = require('browserify'); |
|
var reactify = require('reactify'); |
|
var sass = require('gulp-sass'); |
|
var webserver = require('gulp-webserver'); |
|
|
|
var PATH = { |
|
OUTPUT_DEST: 'dist', |
|
JS: { |
|
ENTRY: 'app/js/app.jsx', |
|
APLICATION: 'app/js/**/*', |
|
OUTPUT_NAME: 'bundle.js' |
|
}, |
|
HTML: { |
|
ENTRY: 'app/index.html' |
|
}, |
|
CSS: { |
|
ENTRY: 'app/css/main.scss', |
|
APLICATION: 'app/css/*/**.scss', |
|
OUTPUT_NAME: 'main.css' |
|
} |
|
} |
|
|
|
gulp.task('build:js', function() { |
|
return browserify({ |
|
entries: [PATH.JS.ENTRY] |
|
}).bundle() |
|
.pipe(source(PATH.JS.OUTPUT_NAME)) |
|
.pipe(gulp.dest(PATH.OUTPUT_DEST)); |
|
}); |
|
|
|
gulp.task('build:html', function() { |
|
gulp.src(PATH.HTML.ENTRY) |
|
.pipe(gulp.dest(PATH.OUTPUT_DEST)); |
|
}); |
|
|
|
gulp.task('build:css', function() { |
|
gulp.src(PATH.CSS.ENTRY) |
|
.pipe(sass({outputStyle: 'compressed'})) |
|
.pipe(gulp.dest(PATH.OUTPUT_DEST)); |
|
}); |
|
|
|
gulp.task('webserver', function() { |
|
gulp.src(PATH.OUTPUT_DEST) |
|
.pipe(webserver({ |
|
open: true, |
|
livereload: true |
|
})); |
|
}); |
|
|
|
gulp.task('build', ['build:html', 'build:css', 'build:js']); |
|
|
|
gulp.task('watch', function() { |
|
gulp.watch(PATH.JS.APLICATION, ['build:js']); |
|
gulp.watch(PATH.CSS.APLICATION, ['build:css']); |
|
gulp.watch(PATH.HTML.ENTRY, ['build:html']); |
|
}); |
|
|
|
gulp.task('deploy', ['build']); |
|
|
|
gulp.task('default', ['build', 'watch', 'webserver']); |