serverless-artillery
Version:
A serverless performance testing tool. `serverless` + `artillery` = crush. a.k.a. Orbital Laziers [sic]
106 lines (91 loc) • 3.34 kB
JavaScript
/*global require*/
var gulp = require('gulp');
var jshint = require('gulp-jshint');
//var recess = require('gulp-recess');
var exec = require('gulp-exec');
var browserify = require('gulp-browserify');
var rename = require('gulp-rename');
var uglify = require('gulp-uglify');
var less = require('gulp-less');
var flatten = require('gulp-flatten');
var static = require('node-static');
var http = require('http');
var open = require('open');
var path = require('path');
var name = require('./package.json').name;
var paths = {
www: 'www',
js: ['**/*.js', '!' + name + '.js', '!**/*.min.js', '!node_modules/**/*.js', '!bower_components/**/*.js'],
less: ['**/*.less', '!node_modules/**/*.less', '!bower_components/**/*.less']
};
paths.wwwBuild = path.join(paths.www, 'build');
paths.js.push('!' + path.join(paths.wwwBuild, '**', '*.js'));
paths.less.push('!' + path.join(paths.wwwBuild, '**', '*.less'));
var baseBrowserifyTransform = ['envify', 'browserify-shim', 'debowerify', 'deamdify'];
var uglifyOpts = {
outSourceMap: true,
preserveComments: 'some'
};
gulp.task('lint-js', function () {
gulp.src(paths.js)
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'));
});
gulp.task('lint-less', function () {
// gulp.src(paths.less)
// .pipe(recess({
// strictPropertyOrder: false, // Bootstrap ignores this
// noOverqualifying: false, // Bootstrap ignores this
// noUniversalSelectors: false, // Bootstrap ignores this
// zeroUnits: false // Bootstrap ignores this
// }));
});
gulp.task('lint', ['lint-js', 'lint-less']);
gulp.task('test', ['lint'], function () {
gulp.src('test/index.js')
.pipe(exec('istanbul cover <%= file.path %>'));
});
gulp.task('build', function () {
var main = require.resolve('./.');
gulp.src(main)
.pipe(browserify({standalone: name}))
.pipe(gulp.dest('.'));
gulp.src(main)
.pipe(browserify({standalone: name}))
.pipe(rename(function (path) { path.basename += '.min'; }))
.pipe(uglify(uglifyOpts))
.pipe(gulp.dest('.'));
});
gulp.task('www-js', function () {
gulp.src(path.join(paths.www, 'index.js'))
.pipe(browserify({}))
.pipe(uglify(uglifyOpts))
.pipe(gulp.dest(path.join(paths.wwwBuild, 'js')));
});
gulp.task('www-less', ['www-fonts'], function () {
gulp.src(path.join(paths.www, 'index.less'))
.pipe(less({paths: [], compress: true}))
.pipe(gulp.dest(path.join(paths.wwwBuild, 'css')));
});
gulp.task('www-fonts', function() {
gulp.src('**/*.{ttf,woff,eof,svg}')
.pipe(flatten())
.pipe(gulp.dest(path.join(paths.wwwBuild, 'fonts')));
});
gulp.task('www-build', ['www-js', 'www-less', 'www-fonts']);
gulp.task('www', ['www-build'], function () {
gulp.watch(paths.js.concat(['!gulpfile.js']), ['www-js']);
gulp.watch(paths.less, ['www-less']);
var fileServer = new static.Server();
var httpServer = http.createServer(function (request, response) {
request.addListener('end', fileServer.serve.bind(fileServer, request, response)).resume();
});
httpServer.on('listening', function () {
var address = httpServer.address();
var addressStr = address.address + ':' + address.port;
console.log("Listening on " + addressStr);
open('http://' + addressStr);
});
httpServer.listen(0, '127.0.0.1');
});
gulp.task('default', ['test', 'build', 'www-build']);