Simple Chat Room in NodeJS, expressJS and mongoDB in Docker Swarm
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
2.9 KiB

5 years ago
var gulp = require("gulp");
var istanbul = require("gulp-istanbul");
var mocha = require("gulp-mocha");
var plumber = require("gulp-plumber");
var jshint = require("gulp-jshint");
var uglify = require("gulp-uglify");
var jscs = require("gulp-jscs");
var coveralls = require("gulp-coveralls");
var rename = require("gulp-rename");
var options = require("yargs").argv;
var pkg = require("./package");
/**
*/
var paths = {
testFiles : ["test/**/*-test.js"],
appFiles : ["sift.js"],
allFiles : ["test/**/*-test.js", "sift.js"]
};
/**
*/
var mochaOptions = {
bail : options.bail !== 'false',
reporter : options.reporter || 'dot',
grep : options.grep || options.only,
timeout : 500
}
/**
*/
gulp.task("test-coverage", function (complete) {
gulp.
src(paths.appFiles).
pipe(istanbul()).
pipe(istanbul.hookRequire()).
on("finish", function () {
gulp.
src(paths.testFiles).
pipe(plumber()).
pipe(mocha(mochaOptions)).
pipe(istanbul.writeReports({
reporters: ["text","text-summary", "lcov"]
})).
on("end", complete);
});
});
/**
*/
gulp.task("test-coveralls", ["test-coverage"], function () {
return gulp.
src("coverage/**/lcov.info").
pipe(coveralls());
});
/**
*/
gulp.task("minify", function() {
return gulp.
src("./" + pkg.name + ".js").
pipe(uglify()).
pipe(rename(function(path) {
path.basename += ".min";
})).
pipe(gulp.dest("./"));
});
/**
*/
gulp.task("lint", function() {
return gulp.run(["jshint", "jscs"]);
});
/**
*/
gulp.task("jscs", function() {
return gulp.
src(paths.allFiles).
pipe(jscs({
"preset": "google",
"requireParenthesesAroundIIFE": true,
"maximumLineLength": 200,
"validateLineBreaks": "LF",
"validateIndentation": 2,
"validateQuoteMarks": "\"",
"disallowKeywords": ["with"],
"disallowSpacesInsideObjectBrackets": null,
"disallowImplicitTypeConversion": ["string"],
"requireCurlyBraces": [],
"safeContextKeyword": "self"
}));
});
/**
*/
gulp.task("jshint", function() {
return gulp.
src(paths.allFiles).
pipe(jshint({
es3: true,
evil: true
})).
pipe(jshint.reporter('default'));
});
/**
*/
gulp.task("test", function (complete) {
gulp.
src(paths.testFiles, { read: false }).
pipe(plumber()).
pipe(mocha(mochaOptions)).
on("error", complete).
on("end", complete);
});
var iofwatch = process.argv.indexOf("watch");
/**
* runs previous tasks (1 or more)
*/
gulp.task("watch", function () {
gulp.watch(paths.allFiles, process.argv.slice(2, iofwatch));
});
/**
*/
gulp.task("default", function () {
return gulp.run("test-coverage");
});
/**
*/
gulp.doneCallback = function (err) {
// a bit hacky, but fixes issue with testing where process
// doesn't exist process. Also fixes case where timeout / interval are set (CC)
if (!~iofwatch) process.exit(err ? 1 : 0);
};