/* eslint camelcase: 0 */
|
'use strict';
|
|
var util = require('util')
|
, gulp = require('gulp')
|
, browserify = require('browserify')
|
, uglify = require('gulp-uglify')
|
, sourcemaps = require('gulp-sourcemaps')
|
, source = require('vinyl-source-stream')
|
, buffer = require('vinyl-buffer')
|
, envify = require('envify/custom')
|
, mocha = require('gulp-mocha')
|
, eslint = require('gulp-eslint')
|
, rename = require('gulp-rename')
|
, header = require('gulp-header')
|
, pkg = require('./package.json')
|
, fs = require('fs')
|
;
|
|
var libName = 'sockjs-' + pkg.version
|
, browserifyOptions = {
|
entries: './lib/entry.js'
|
, standalone: 'SockJS'
|
, insertGlobalVars: {
|
process: function () {
|
return '{ env: {} }';
|
}
|
}
|
}
|
;
|
|
var banner = '/* sockjs-client v<%= pkg.version %> | http://sockjs.org | MIT license */\n';
|
|
gulp.task('test', function () {
|
gulp.src('tests/node.js', {read: false})
|
.pipe(mocha());
|
});
|
|
gulp.task('eslint', function () {
|
gulp.src([
|
'lib/**/*.js',
|
'tests/lib/**/*.js',
|
'tests/support/**/*.js',
|
'tests/*.js'
|
])
|
.pipe(eslint())
|
.pipe(eslint.format());
|
});
|
|
gulp.task('watch', function () {
|
gulp.watch('tests/*.js', ['test']);
|
});
|
|
gulp.task('write-version', function () {
|
fs.writeFileSync('./lib/version.js', "module.exports = '" + pkg.version + "';\n");
|
});
|
|
gulp.task('testbundle', ['browserify:min'], function() {
|
return gulp.src('./build/' + libName + '.min.js')
|
.pipe(rename('sockjs.js'))
|
.pipe(gulp.dest('./tests/html/lib/'));
|
});
|
|
gulp.task('testbundle-debug', ['browserify'], function() {
|
gulp.src('./build/sockjs.js')
|
.pipe(rename('sockjs.js'))
|
.pipe(gulp.dest('./tests/html/lib/'));
|
|
return gulp.src('./build/sockjs.js.map')
|
.pipe(rename('sockjs.js.map'))
|
.pipe(gulp.dest('./tests/html/lib/'));
|
});
|
|
gulp.task('browserify', ['write-version'], function () {
|
return browserify(util._extend({
|
debug: true
|
}, browserifyOptions))
|
.bundle()
|
.pipe(source('sockjs.js'))
|
.pipe(buffer())
|
.pipe(sourcemaps.init({ loadMaps: true }))
|
.pipe(header(banner, { pkg: pkg }))
|
.pipe(sourcemaps.write('./'))
|
.pipe(gulp.dest('./build/'))
|
;
|
});
|
|
gulp.task('browserify:min', ['write-version'], function () {
|
return browserify(browserifyOptions)
|
.exclude('debug')
|
.transform(envify({
|
NODE_ENV: 'production'
|
}))
|
.bundle()
|
.pipe(source(libName + '.min.js'))
|
.pipe(buffer())
|
.pipe(uglify({
|
compress: {
|
// remove debug statements from output entirely
|
pure_funcs: ['debug']
|
}
|
}))
|
.pipe(header(banner, { pkg: pkg }))
|
.pipe(gulp.dest('./build/'))
|
;
|
});
|
|
gulp.task('release', ['browserify', 'browserify:min'], function () {
|
// sockjs-{version}.min.js
|
gulp.src('./build/' + libName + '.min.js')
|
.pipe(gulp.dest('./dist/'));
|
|
// sockjs-{version}.js
|
gulp.src('./build/sockjs.js')
|
.pipe(rename(libName + '.js'))
|
.pipe(gulp.dest('./dist/'));
|
|
gulp.src('./build/sockjs.js.map')
|
.pipe(gulp.dest('./dist/'));
|
});
|
|
gulp.task('stable-release', ['release'], function () {
|
// sockjs.min.js
|
gulp.src('./build/' + libName + '.min.js')
|
.pipe(rename('sockjs.min.js'))
|
.pipe(gulp.dest('./dist/'));
|
|
// sockjs.js
|
gulp.src('./build/sockjs.js')
|
.pipe(rename('sockjs.js'))
|
.pipe(gulp.dest('./dist/'));
|
});
|