playbasis
Version:
Playbasis Javascript SDK
135 lines (117 loc) • 3.68 kB
JavaScript
// adapt code and on top of Chart.js
var gulp = require('gulp');
var browserify = require('browserify');
var source = require('vinyl-source-stream');
var insert = require('gulp-insert');
var streamify = require('gulp-streamify');
var replace = require('gulp-replace');
var concat = require('gulp-concat');
var uglify = require('uglify-js');
var minifier = require('gulp-uglify/minifier');
var collapse = require('bundle-collapser/plugin');
var package = require('./package.json');
var karma = require('gulp-karma');
var argv = require('yargs').argv;
var jsdoc = require('gulp-jsdoc3');
var babel = require('gulp-babel');
var srcDir = './src/';
var outDir = './dist/';
var header = "/*!\n" +
" * Playbasis.js\n" +
" * https://www.playbasis.com/\n" +
" * Version: {{ version }}\n" +
" *\n" +
" * Copyright 2016 Playbasis Co.,Ltd\n" +
" * Released under the MIT license\n" +
" * https://github.com/playbasis/native-sdk-js/blob/master/LICENSE.md\n" +
" */\n";
var preTestFiles = [
];
var testFiles = [
'./test/*.js'
];
/**
* Tasks
*/
gulp.task('build', ['buildInitial'], buildCombinedTask);
gulp.task('buildInitial', buildInitialTask);
gulp.task('buildNormal', buildNormalTask);
gulp.task('buildMinified', buildMinifiedTask);
gulp.task('unittest', unittestTask);
gulp.task('unittestFull', unittestFullTask);
gulp.task('doc', docTask);
function startTest() {
return [].concat(preTestFiles).concat([
'./src/**/*.js',
'./test/mockContext.js'
]).concat(
argv.inputs?
argv.inputs.split(';'):
testFiles
);
}
function unittestTask() {
return gulp.src(startTest())
.pipe(karma({
configFile: 'karma.conf.fast.js',
action: 'run'
}));
}
function unittestFullTask() {
return gulp.src(startTest())
.pipe(karma({
configFile: 'karma.conf.js',
action: 'run'
}));
}
function buildInitialTask() {
// build normal version
var bundled = browserify('./src/playbasis.js', { standalone: 'Playbasis' })
.plugin(collapse)
.bundle()
.pipe(source('Playbasis-es6-' + package.version + '.js'))
.pipe(insert.prepend(header))
.pipe(streamify(replace('{{ version }}', package.version)))
.pipe(gulp.dest(outDir));
return bundled;
}
function buildCombinedTask() {
buildNormalTask();
buildMinifiedTask();
}
function buildNormalTask() {
// build minified version
var options = {
preserveComments: 'license'
};
// TODO: Whenever gulp-uglify support es6, then we update this to just chain (pipe) and use uglify directly from gulp-uglify
// but for this instance we need to convert it to es2015 first before minify and uglify
return gulp.src('dist/Playbasis-es6-' + package.version + '.js')
.pipe(babel({
presets: ['es2015', 'react-native']
}))
.pipe(streamify(replace('{{ version }}', package.version)))
.pipe(streamify(concat('Playbasis-' + package.version + '.js')))
.pipe(gulp.dest(outDir));
}
function buildMinifiedTask() {
// build minified version
var options = {
preserveComments: 'license'
};
// TODO: Whenever gulp-uglify support es6, then we update this to just chain (pipe) and use uglify directly from gulp-uglify
// but for this instance we need to convert it to es2015 first before minify and uglify
return gulp.src('dist/Playbasis-es6-' + package.version + '.js')
.pipe(babel({
presets: ['es2015', 'react-native']
}))
.pipe(minifier(options, uglify))
.pipe(streamify(replace('{{ version }}', package.version)))
.pipe(streamify(concat('Playbasis.min-' + package.version + '.js')))
.pipe(gulp.dest(outDir));
}
function docTask(cb) {
var config = require('./jsdocConfig.json');
return gulp.src(['README.md', './src/**/*.js'], {read: false})
.pipe(jsdoc(config));
}