@shackpank/truman
Version:
Simple test fixtures for single page apps
91 lines (77 loc) • 2.22 kB
JavaScript
;
var gulp = require('gulp');
var watch = require('gulp-watch');
var webpack = require('webpack-stream');
var webpackConfig = require('./webpack.config.js');
var del = require('del');
var notify = require('gulp-notify');
var runSequence = require('run-sequence');
var connect = require('gulp-connect');
var connectRewrite = require('http-rewrite-middleware');
var open = require('gulp-open');
var rename = require('gulp-rename');
var SOURCE_CODE = './src/**/*.js';
var ENTRY_POINT = './src/truman.js';
var BUILD_DEST = './dist/';
var SANDBOX_DEST = './sandbox/';
var BUILT_FILES = './dist/*.js';
function logError(error) {
var errorString = error.toString();
notify.onError({
title: 'Build Error',
message: errorString
})(error);
console.log(errorString);
this.emit('end');
}
// ---------------------------------
// --------- BUILD TASKS -----------
// ---------------------------------
gulp.task('clean', function(callback) {
return del(BUILT_FILES, callback);
});
gulp.task('bundle', function() {
return gulp.src(ENTRY_POINT)
.pipe(webpack(webpackConfig))
.on('error', logError)
.pipe(rename('truman.min.js'))
.pipe(gulp.dest(BUILD_DEST))
.pipe(gulp.dest(SANDBOX_DEST));
});
// ---------------------------------
// --------- WATCH TASKS -----------
// ---------------------------------
gulp.task('watch', function() {
watch(SOURCE_CODE, function() {
gulp.start('build');
});
});
// ---------------------------------
// --------- SERVER TASKS ----------
// ---------------------------------
gulp.task('connect', function() {
var middleware = connectRewrite.getMiddleware([
{ from: '^([^.]+[^/])$', to: '$1.html' }
]);
return connect.server({
root: 'sandbox',
port: 8082,
livereload: true,
middleware: function() {
return [middleware];
}
});
});
gulp.task('open', function() {
return gulp.src('./sandbox/index.html')
.pipe(open({
uri: 'http://localhost:8082',
app: 'google chrome'
}));
});
gulp.task('build', function(cb) {
return runSequence('clean', 'bundle', cb);
});
gulp.task('start', function(cb) {
return runSequence(['clean', 'connect'], 'bundle', ['watch', 'open'], cb);
});