123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- var gulp = require('gulp'),
- concat = require('gulp-concat'),
- uglify = require('gulp-uglify'),
- util = require('gulp-util'),
- jshint = require('gulp-jshint'),
- size = require('gulp-size'),
- connect = require('gulp-connect'),
- replace = require('gulp-replace'),
- htmlv = require('gulp-html-validator'),
- inquirer = require('inquirer'),
- semver = require('semver'),
- exec = require('child_process').exec,
- fs = require('fs'),
- package = require('./package.json'),
- bower = require('./bower.json');
- var srcDir = './src/';
- /*
- * Usage : gulp build --types=Bar,Line,Doughnut
- * Output: - A built Chart.js file with Core and types Bar, Line and Doughnut concatenated together
- * - A minified version of this code, in Chart.min.js
- */
- gulp.task('build', function(){
- // Default to all of the chart types, with Chart.Core first
- var srcFiles = [FileName('Core')],
- isCustom = !!(util.env.types),
- outputDir = (isCustom) ? 'custom' : '.';
- if (isCustom){
- util.env.types.split(',').forEach(function(type){ return srcFiles.push(FileName(type))});
- }
- else{
- // Seems gulp-concat remove duplicates - nice!
- // So we can use this to sort out dependency order - aka include Core first!
- srcFiles.push(srcDir+'*');
- }
- return gulp.src(srcFiles)
- .pipe(concat('Chart.js'))
- .pipe(replace('{{ version }}', package.version))
- .pipe(gulp.dest(outputDir))
- .pipe(uglify({preserveComments:'some'}))
- .pipe(concat('Chart.min.js'))
- .pipe(gulp.dest(outputDir));
- function FileName(moduleName){
- return srcDir+'Chart.'+moduleName+'.js';
- };
- });
- /*
- * Usage : gulp bump
- * Prompts: Version increment to bump
- * Output: - New version number written into package.json & bower.json
- */
- gulp.task('bump', function(complete){
- util.log('Current version:', util.colors.cyan(package.version));
- var choices = ['major', 'premajor', 'minor', 'preminor', 'patch', 'prepatch', 'prerelease'].map(function(versionType){
- return versionType + ' (v' + semver.inc(package.version, versionType) + ')';
- });
- inquirer.prompt({
- type: 'list',
- name: 'version',
- message: 'What version update would you like?',
- choices: choices
- }, function(res){
- var increment = res.version.split(' ')[0],
- newVersion = semver.inc(package.version, increment);
- // Set the new versions into the bower/package object
- package.version = newVersion;
- bower.version = newVersion;
- // Write these to their own files, then build the output
- fs.writeFileSync('package.json', JSON.stringify(package, null, 2));
- fs.writeFileSync('bower.json', JSON.stringify(bower, null, 2));
- complete();
- });
- });
- gulp.task('release', ['build'], function(){
- exec('git tag -a v' + package.version);
- });
- gulp.task('jshint', function(){
- return gulp.src(srcDir + '*.js')
- .pipe(jshint())
- .pipe(jshint.reporter('default'));
- });
- gulp.task('valid', function(){
- return gulp.src('samples/*.html')
- .pipe(htmlv());
- });
- gulp.task('library-size', function(){
- return gulp.src('Chart.min.js')
- .pipe(size({
- gzip: true
- }));
- });
- gulp.task('module-sizes', function(){
- return gulp.src(srcDir + '*.js')
- .pipe(uglify({preserveComments:'some'}))
- .pipe(size({
- showFiles: true,
- gzip: true
- }))
- });
- gulp.task('watch', function(){
- gulp.watch('./src/*', ['build']);
- });
- gulp.task('test', ['jshint', 'valid']);
- gulp.task('size', ['library-size', 'module-sizes']);
- gulp.task('default', ['build', 'watch']);
- gulp.task('server', function(){
- connect.server({
- port: 8000
- });
- });
- // Convenience task for opening the project straight from the command line
- gulp.task('_open', function(){
- exec('open http://localhost:8000');
- exec('subl .');
- });
- gulp.task('dev', ['server', 'default']);
|