svgdecanvo
Version:
SVG to Canvas Converter
120 lines (91 loc) • 3.49 kB
JavaScript
// Gulp Dependencies
var gulp = require('gulp');
var babel = require('gulp-babel');
var babelify = require('babelify');
var browserify = require('browserify');
var del = require('del');
var gutil = require('gulp-util');
var rename = require('gulp-rename');
var shim = require('browserify-shim');
var source = require('vinyl-source-stream');
var streamify = require('gulp-streamify');
var uglify = require('gulp-uglify');
var connect = require('gulp-connect');
var header = require('gulp-header');
var path = require('path');
var pkgJSON = JSON.parse(require('fs').readFileSync('./package.json'));
var BANNER = `
/**!
* SvgDeCanvo <%= version %> - JavaScript Vector Library
* Copyright (c) 2015-2016 FusionCharts Technologies <http://www.fusioncharts.com>
* Licensed under the MIT license.
*/
`;
// Build task
gulp.task('clean:dist', function () {
return del([pkgJSON.build.dist]);
});
gulp.task('create:dist', ['clean:dist'], function () {
var standalone = browserify(pkgJSON.source.src + '/' + pkgJSON.source.name, {
})
.transform(babelify.configure({
// presets: ["es2015"]
}))
return standalone.bundle()
.on('error', function (e) {
gutil.log('Browserify Error', e);
})
.pipe(source(pkgJSON.build.name + '.js'))
.pipe(header(BANNER, pkgJSON ))
.pipe(gulp.dest(pkgJSON.build.dist))
.pipe(rename(pkgJSON.build.name + '-min.js'))
.pipe(streamify(uglify()))
.pipe(header(BANNER, pkgJSON ))
.pipe(gulp.dest(pkgJSON.build.dist));
});
gulp.task('clean:lib', function () {
return del([pkgJSON.lib]);
});
gulp.task('create:lib', ['clean:lib'], function () {
return gulp.src([ pkgJSON.source.src + '/**/*.js' ])
.pipe(babel({
}))
.pipe(gulp.dest(pkgJSON.lib));
});
gulp.task('watch', ['create:dist', 'create:lib'], function () {
return gulp.watch([pkgJSON.source.src + '/**/*.js'], ['create:dist', 'create:lib']);
});
// Web server task
gulp.task('start:server', function () {
connect.server({
root: pkgJSON.samples.root,
fallback: path.join(pkgJSON.samples.root + '/' + pkgJSON.samples.dist, 'index.html'),
port: pkgJSON.samples.port || process.env.PORT || 8000,
livereload: true
});
// Reload the browser
return connect.reload();
});
gulp.task('copy:html', function () {
return gulp.src([ pkgJSON.samples.root + '/' + pkgJSON.samples.src + '/index.html' ])
.pipe(gulp.dest(pkgJSON.samples.root + '/' + pkgJSON.samples.dist));
});
gulp.task('build:sample', ['create:lib', 'copy:html'], function () {
var standalone = browserify(pkgJSON.samples.root + '/' + pkgJSON.samples.src + '/index.js')
.transform(babelify.configure());
return standalone.bundle()
.on('error', function (e) {
gutil.log('Browserify Error', e);
})
.pipe(source('bundle.js'))
.pipe(gulp.dest(pkgJSON.samples.root + '/' + pkgJSON.samples.dist))
.pipe(connect.reload());
});
gulp.task('watch:samples', ['create:dist', 'create:lib', 'build:sample'], function () {
// Watch source file to create build and lib
gulp.watch(['./samples/src/*.js'], ['build:sample']);
gulp.watch(['./samples/src/*.html'], ['build:sample']);
gulp.watch([pkgJSON.source.src + '/**/*.js'], ['create:lib', 'build:sample']);
});
gulp.task('build', [ 'create:dist', 'create:lib' ]);
gulp.task('start', ['start:server', 'watch:samples']);