Skip to content

Commit

Permalink
Add build sequence + dev dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
nnnick committed Jun 29, 2014
1 parent 10227f8 commit e24efd2
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 0 deletions.
87 changes: 87 additions & 0 deletions gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
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'),
exec = require('child_process').exec;

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(gulp.dest(outputDir))
.pipe(uglify({preserveComments:'some'}))
.pipe(concat('Chart.min.js'))
.pipe(gulp.dest(outputDir));

function FileName(moduleName){
return srcDir+'Chart.'+moduleName+'.js';
};
});

gulp.task('jshint', function(){
return gulp.src(srcDir + '*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
});

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']);

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']);
21 changes: 21 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"name": "Chart.js",
"homepage": "http://www.chartjs.org",
"description": "Simple HTML5 charts using the canvas element.",
"private": true,
"version": "1.0.0-beta",
"repository": {
"type": "git",
"url": "https://github.com/nnnick/Chart.js.git"
},
"dependences": {},
"devDependencies": {
"gulp": "3.5.x",
"gulp-concat": "~2.1.x",
"gulp-uglify": "~0.2.x",
"gulp-util": "~2.2.x",
"gulp-jshint": "~1.5.1",
"gulp-size": "~0.4.0",
"gulp-connect": "~2.0.5"
}
}

2 comments on commit e24efd2

@ronaiza-cardoso
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you say to me what is this?

@nnnick
Copy link
Member Author

@nnnick nnnick commented on e24efd2 Jun 30, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's some tasks for building, minifying, linting & developing new features for the library which use the javascript task runner, gulp.

See http://gulpjs.com/ for more information about using gulp.

Please sign in to comment.