habitica/gulpfile.js
2015-02-01 23:09:07 -06:00

104 lines
2.6 KiB
JavaScript

var gulp = require('gulp'),
_ = require('lodash'),
browserify = require('browserify'),
coffeeify = require('coffeeify'),
source = require('vinyl-source-stream');
transform = require('vinyl-transform'),
rimraf = require('rimraf'),
nodemon = require('gulp-nodemon'),
karma = require('karma').server,
stylus = require('gulp-stylus'),
nib = require('nib'),
minifycss = require('gulp-minify-css'),
rename = require('gulp-rename'),
uglify = require('gulp-uglify'),
concat = require('gulp-concat'),
spritesmith = require('gulp.spritesmith'),
pkg = require('./package');
var paths = {
stylus: {
src: {
app: './common/public/css/index.styl',
staticPage: './common/public/css/static.styl' // static is a 'future' reserved word
},
dest: './build/'
},
common: {
src: ['./common/index.js'],
dest: './common/public/'
},
sprites: {
src: 'img/sprites/spritesmith/**/*.png',
dest: './common/public/sprites/'
},
copy: {
src: ['./common/img/sprites/backer-only/*.gif',
'./common/img/sprites/npc_ian.gif',
'./bower_components/bootstrap/dist/fonts/*'],
dest: './build/'
}
};
gulp.task('karma', function (done) {
karma.start({
configFile: __dirname + '/karma.conf.js',
singleRun: true
}, done);
});
gulp.task('git_changelog', function() {
// @TODO: Finish this
});
gulp.task('clean', function(cb) {
rimraf('./build', cb);
});
gulp.task('stylus', function() {
gulp.src(paths.stylus.src.app)
.pipe(stylus({use: [nib()]}))
.pipe(rename('app.css'))
.pipe(gulp.dest(paths.stylus.dest));
gulp.src(paths.stylus.src.staticPage)
.pipe(stylus({use: [nib()]}))
.pipe(rename('static.css'))
.pipe(gulp.dest(paths.stylus.dest));
});
gulp.task('copy', function() {
gulp.src(paths.copy.src)
.pipe(gulp.dest(paths.copy.dest));
});
gulp.task('hashres', function() {
// @TODO: Finish this
});
gulp.task('sprite', function() {
// @TODO: Finish this
});
gulp.task('browserify', function() {
var bundleStream = browserify(paths.common.src)
.transform(coffeeify)
.bundle()
bundleStream
.pipe(source('habitrpg-shared.js'))
.pipe(gulp.dest(paths.common.dest))
})
gulp.task('watch', ['stylus'], function() {
// @TODO: Finish this
});
gulp.task('dev', ['watch'], function() {
// @TODO: Finish this
nodemon({ script: pkg.main });
});
gulp.task('prod', ['clean', 'stylus', 'copy'], function() {
// @TODO: Finish this
});
gulp.task('default', ['dev']);