2015-06-10 14:25:27 +00:00
|
|
|
var browserify = require('browserify');
|
|
|
|
var gulp = require('gulp');
|
|
|
|
var source = require('vinyl-source-stream');
|
|
|
|
var fs = require("fs");
|
|
|
|
var babelify = require("babelify");
|
|
|
|
var livereload = require("gulp-livereload");
|
|
|
|
var sass = require("gulp-sass");
|
2015-06-22 15:29:01 +00:00
|
|
|
var handlebars = require("browserify-handlebars");
|
2015-06-27 11:23:05 +00:00
|
|
|
var imagemin = require('gulp-imagemin');
|
|
|
|
var gm = require("gulp-gm");
|
|
|
|
var sprity = require("sprity");
|
|
|
|
var gulpif = require("gulp-if");
|
2015-12-23 12:09:07 +00:00
|
|
|
var argv = require("minimist")(process.argv.slice(2));
|
|
|
|
var rename = require("gulp-rename");
|
|
|
|
//livereload({start: true});
|
2015-06-10 14:25:27 +00:00
|
|
|
|
|
|
|
//fast install
|
|
|
|
//npm i --save-dev browserify vinyl-source-stream babelify gulp-livereload gulp gulp-sass
|
|
|
|
|
|
|
|
|
2015-12-23 12:09:07 +00:00
|
|
|
gulp.task('browserify', function() {
|
2015-06-19 16:40:35 +00:00
|
|
|
browserify('./client/js/main.js', {standalone: "app", debug: true})
|
2015-12-23 12:09:07 +00:00
|
|
|
.transform(handlebars).on("error", function(err) {
|
2015-06-26 12:40:19 +00:00
|
|
|
console.log(err);
|
|
|
|
})
|
2015-06-10 14:25:27 +00:00
|
|
|
.transform(babelify)
|
2015-12-23 12:09:07 +00:00
|
|
|
.bundle().on("error", function(err) {
|
2015-06-10 14:25:27 +00:00
|
|
|
console.log(err);
|
|
|
|
})
|
2015-12-23 12:09:07 +00:00
|
|
|
.pipe(source('app.js').on("error", function(err) {
|
2015-06-10 14:25:27 +00:00
|
|
|
console.log(err);
|
|
|
|
}))
|
2015-12-23 12:09:07 +00:00
|
|
|
.pipe(gulp.dest('./public/build/').on("error", function(err) {
|
2015-06-10 14:25:27 +00:00
|
|
|
console.log(err);
|
|
|
|
}));
|
2015-06-19 16:40:35 +00:00
|
|
|
|
2015-06-10 14:25:27 +00:00
|
|
|
});
|
|
|
|
|
2015-12-23 12:09:07 +00:00
|
|
|
gulp.task('sass', function() {
|
2015-06-19 16:40:35 +00:00
|
|
|
gulp.src('./client/scss/main.scss')
|
2015-06-10 14:25:27 +00:00
|
|
|
.pipe(sass({
|
|
|
|
outputStyle: 'compressed'
|
2015-12-23 12:09:07 +00:00
|
|
|
}).on("error", function(err) {
|
2015-06-10 14:25:27 +00:00
|
|
|
console.log(err);
|
|
|
|
}))
|
2015-12-23 12:09:07 +00:00
|
|
|
.pipe(gulp.dest('./public/build/').on("error", function(err) {
|
2015-06-10 14:25:27 +00:00
|
|
|
console.log(err);
|
|
|
|
}))
|
2015-12-23 12:09:07 +00:00
|
|
|
.pipe(livereload().on("error", function(err) {
|
2015-06-10 14:25:27 +00:00
|
|
|
console.log(err);
|
|
|
|
}));
|
|
|
|
});
|
|
|
|
|
2015-12-23 12:09:07 +00:00
|
|
|
gulp.task("unit tests", function() {
|
2015-06-19 16:40:35 +00:00
|
|
|
browserify('./test/src/mainSpec.js', {standalone: "app", debug: true})
|
2015-06-19 12:14:37 +00:00
|
|
|
.transform(babelify)
|
2015-12-23 12:09:07 +00:00
|
|
|
.bundle().on("error", function(err) {
|
2015-06-19 12:14:37 +00:00
|
|
|
console.log(err);
|
|
|
|
})
|
2015-12-23 12:09:07 +00:00
|
|
|
.pipe(source('spec.js').on("error", function(err) {
|
2015-06-19 12:14:37 +00:00
|
|
|
console.log(err);
|
|
|
|
}))
|
2015-12-23 12:09:07 +00:00
|
|
|
.pipe(gulp.dest('./test/spec/').on("error", function(err) {
|
2015-06-19 12:14:37 +00:00
|
|
|
console.log(err);
|
|
|
|
}));
|
|
|
|
})
|
|
|
|
|
2015-12-23 12:09:07 +00:00
|
|
|
gulp.task("watch", function() {
|
|
|
|
if(argv.production) return;
|
2015-06-19 16:40:35 +00:00
|
|
|
gulp.watch("./client/js/*", ["browserify"]);
|
2015-06-22 15:42:48 +00:00
|
|
|
gulp.watch("./client/templates/*", ["browserify"]);
|
2015-06-19 16:40:35 +00:00
|
|
|
gulp.watch("./client/scss/*", ["sass"]);
|
2015-06-21 14:50:50 +00:00
|
|
|
gulp.watch("./client/*.html", ["index"]);
|
2015-06-19 16:40:35 +00:00
|
|
|
gulp.watch("./test/src/*", ["unit tests"]);
|
|
|
|
})
|
|
|
|
|
2015-06-27 11:23:05 +00:00
|
|
|
|
2015-12-23 12:09:07 +00:00
|
|
|
gulp.task("index", function() {
|
2015-06-19 16:40:35 +00:00
|
|
|
gulp.src("./client/index.html")
|
|
|
|
.pipe(gulp.dest("./public/"));
|
|
|
|
|
|
|
|
gulp.src("./client/css/bootstrap.css")
|
|
|
|
.pipe(gulp.dest("./public/build"));
|
2015-06-10 14:25:27 +00:00
|
|
|
})
|
|
|
|
|
2015-12-23 12:09:07 +00:00
|
|
|
gulp.task('resize sm', function(done) {
|
|
|
|
if(fs.existsSync(__dirname + "/assets/cards/sm/monster/arachas1.png")) {
|
2015-07-03 13:16:21 +00:00
|
|
|
console.log("skip generating sm images");
|
2015-07-03 13:32:46 +00:00
|
|
|
return done();
|
2015-07-03 13:16:21 +00:00
|
|
|
}
|
|
|
|
return gulp.src('./assets/original_cards/**/*.png')
|
2015-12-23 12:09:07 +00:00
|
|
|
.pipe(gm(function(gmfile) {
|
2015-07-03 13:16:21 +00:00
|
|
|
return gmfile.resize(null, 120);
|
|
|
|
}))
|
|
|
|
.pipe(imagemin())
|
|
|
|
.pipe(gulp.dest('./assets/cards/sm/'));
|
2015-06-27 11:54:42 +00:00
|
|
|
});
|
2015-06-27 11:23:05 +00:00
|
|
|
|
2015-12-23 12:09:07 +00:00
|
|
|
gulp.task('resize md', function(done) {
|
|
|
|
if(fs.existsSync(__dirname + "/assets/cards/md/monster/arachas1.png")) {
|
2015-07-03 13:32:46 +00:00
|
|
|
console.log("skip generating md images");
|
|
|
|
return done();
|
|
|
|
}
|
|
|
|
return gulp.src('./assets/original_cards/**/*.png')
|
2015-12-23 12:09:07 +00:00
|
|
|
.pipe(gm(function(gmfile) {
|
2015-07-03 13:32:46 +00:00
|
|
|
return gmfile.resize(null, 284);
|
|
|
|
}))
|
|
|
|
.pipe(imagemin())
|
|
|
|
.pipe(gulp.dest('./assets/cards/md/'));
|
|
|
|
});
|
|
|
|
|
2015-12-23 12:09:07 +00:00
|
|
|
gulp.task('resize lg', ["resize sm", "resize md"], function(done) {
|
|
|
|
if(fs.existsSync(__dirname + "/assets/cards/lg/monster/arachas1.png")) {
|
2015-07-03 13:16:21 +00:00
|
|
|
console.log("skip generating lg images");
|
2015-06-27 11:54:42 +00:00
|
|
|
return done();
|
2015-07-03 13:16:21 +00:00
|
|
|
}
|
|
|
|
return gulp.src('./assets/original_cards/**/*.png')
|
2015-12-23 12:09:07 +00:00
|
|
|
.pipe(gm(function(gmfile) {
|
2015-07-03 13:16:21 +00:00
|
|
|
return gmfile.resize(null, 450);
|
|
|
|
}))
|
|
|
|
.pipe(imagemin())
|
|
|
|
.pipe(gulp.dest('./assets/cards/lg/'));
|
2015-06-27 11:23:05 +00:00
|
|
|
});
|
|
|
|
|
2015-12-23 12:09:07 +00:00
|
|
|
gulp.task("generate sprites", ["resize lg"], function() {
|
|
|
|
if(fs.existsSync(__dirname + "/public/build/cards-lg-monster.png")) {
|
|
|
|
console.log("skip sprite generation");
|
2015-06-27 11:23:05 +00:00
|
|
|
return;
|
2015-06-27 12:39:33 +00:00
|
|
|
}
|
2015-07-03 13:32:46 +00:00
|
|
|
|
|
|
|
|
2015-12-23 12:09:07 +00:00
|
|
|
return sprity.src({
|
2015-06-27 11:23:05 +00:00
|
|
|
src: "./assets/cards/**/*.png",
|
2015-06-27 12:24:04 +00:00
|
|
|
style: "cards.css",
|
2015-06-27 11:23:05 +00:00
|
|
|
//"style-type": "scss",
|
|
|
|
processor: "css",
|
|
|
|
engine: "gm",
|
|
|
|
orientation: "binary-tree",
|
|
|
|
split: true,
|
|
|
|
cssPath: "../../public/build/",
|
|
|
|
prefix: "card",
|
|
|
|
name: "cards",
|
|
|
|
margin: 0
|
|
|
|
//template: "./client/scss/_cards.hbs"
|
|
|
|
})
|
2015-06-28 14:10:25 +00:00
|
|
|
.pipe(imagemin())
|
2015-06-27 12:24:04 +00:00
|
|
|
.pipe(gulp.dest("./public/build/"));
|
2015-06-27 11:23:05 +00:00
|
|
|
})
|
|
|
|
|
2015-12-23 12:09:07 +00:00
|
|
|
|
|
|
|
gulp.task("default", ["watch", "browserify", "sass", "unit tests", "index", "resize lg", "resize sm", "resize md", "generate sprites"]);
|