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');
+ 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'),
+ karma = require('gulp-karma');
var srcDir = './src/';
+var testDir = './test/';
/*
* 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
*/
+var srcFiles = [
+ './src/core/core.js',
+ './src/core/core.helpers.js',
+ './src/core/core.chart.js',
+ './src/core/core.element.js',
+ './src/core/**',
+ './src/controllers/**',
+ './src/scales/**',
+ './src/elements/**',
+ './src/charts/**',
+ './node_modules/color/dist/color.min.js'
+ ];
+
gulp.task('build', function() {
- var srcFiles = [
- './src/core/core.js',
- './src/core/core.helpers.js',
- './src/core/core.chart.js',
- './src/core/core.element.js',
- './src/core/**',
- './src/controllers/**',
- './src/scales/**',
- './src/elements/**',
- './src/charts/**',
- './node_modules/color/dist/color.min.js'
- ],
- isCustom = !!(util.env.types),
- outputDir = (isCustom) ? 'custom' : '.';
-
- 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));
+ var isCustom = !!(util.env.types),
+ outputDir = (isCustom) ? 'custom' : '.';
+
+ 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));
});
*/
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();
- });
+ 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);
+ exec('git tag -a v' + package.version);
});
gulp.task('jshint', function() {
- return gulp.src(srcDir + '*.js')
- .pipe(jshint())
- .pipe(jshint.reporter('default'));
+ return gulp.src(srcDir + '*.js')
+ .pipe(jshint())
+ .pipe(jshint.reporter('default'));
});
gulp.task('valid', function() {
- return gulp.src('samples/*.html')
- .pipe(htmlv());
+ return gulp.src('samples/*.html')
+ .pipe(htmlv());
+});
+
+gulp.task('unittest', function() {
+ var files = srcFiles.slice();
+ files.push(testDir + '*.js');
+
+ return gulp.src(files)
+ .pipe(karma({
+ configFile: 'karma.conf.js',
+ action: 'run'
+ }))
+ .on('error', function(err) {
+ throw err;
+ });
});
gulp.task('library-size', function() {
- return gulp.src('Chart.min.js')
- .pipe(size({
- gzip: true
- }));
+ 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
- }));
+ return gulp.src(srcDir + '*.js')
+ .pipe(uglify({
+ preserveComments: 'some'
+ }))
+ .pipe(size({
+ showFiles: true,
+ gzip: true
+ }));
});
gulp.task('watch', function() {
- gulp.watch('./src/**', ['build']);
+ gulp.watch('./src/**', ['build']);
});
gulp.task('test', ['jshint', 'valid']);
gulp.task('default', ['build', 'watch']);
gulp.task('server', function() {
- connect.server({
- port: 8000
- });
+ 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 .');
+ exec('open http://localhost:8000');
+ exec('subl .');
});
gulp.task('dev', ['server', 'default']);
{
- "name": "chart.js",
- "homepage": "http://www.chartjs.org",
- "description": "Simple HTML5 charts using the canvas element.",
- "version": "2.0.0-alpha",
- "main": "Chart.js",
- "repository": {
- "type": "git",
- "url": "https://github.com/nnnick/Chart.js.git"
- },
- "dependences": {},
- "devDependencies": {
- "color": "git://github.com/chartjs/color",
- "gulp": "3.5.x",
- "gulp-concat": "~2.1.x",
- "gulp-connect": "~2.0.5",
- "gulp-html-validator": "^0.0.2",
- "gulp-jshint": "~1.5.1",
- "gulp-replace": "^0.4.0",
- "gulp-size": "~0.4.0",
- "gulp-uglify": "~0.2.x",
- "gulp-util": "~2.2.x",
- "inquirer": "^0.5.1",
- "jquery": "^2.1.4",
- "onecolor": "^2.5.0",
- "semver": "^3.0.1"
- },
- "spm": {
- "main": "Chart.js"
- }
+ "name": "chart.js",
+ "homepage": "http://www.chartjs.org",
+ "description": "Simple HTML5 charts using the canvas element.",
+ "version": "2.0.0-alpha",
+ "main": "Chart.js",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/nnnick/Chart.js.git"
+ },
+ "dependences": {},
+ "devDependencies": {
+ "color": "git://github.com/chartjs/color",
+ "gulp": "3.5.x",
+ "gulp-concat": "~2.1.x",
+ "gulp-connect": "~2.0.5",
+ "gulp-html-validator": "^0.0.2",
+ "gulp-jshint": "~1.5.1",
+ "gulp-karma": "0.0.4",
+ "gulp-replace": "^0.4.0",
+ "gulp-size": "~0.4.0",
+ "gulp-uglify": "~0.2.x",
+ "gulp-util": "~2.2.x",
+ "inquirer": "^0.5.1",
+ "jasmine": "^2.3.2",
+ "jasmine-core": "^2.3.4",
+ "jquery": "^2.1.4",
+ "karma": "^0.12.37",
+ "karma-chrome-launcher": "^0.2.0",
+ "karma-firefox-launcher": "^0.1.6",
+ "karma-jasmine": "^0.3.6",
+ "onecolor": "^2.5.0",
+ "semver": "^3.0.1"
+ },
+ "spm": {
+ "main": "Chart.js"
+ }
}