mirror of https://github.com/ColorlibHQ/gentelella
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
6.0 KiB
226 lines
6.0 KiB
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'), |
|
insert = require('gulp-insert'), |
|
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'), |
|
browserify = require('browserify'), |
|
streamify = require('gulp-streamify'), |
|
source = require('vinyl-source-stream'), |
|
merge = require('merge-stream'); |
|
|
|
var srcDir = './src/'; |
|
var outDir = './dist/'; |
|
|
|
var header = "/*!\n" + |
|
" * Chart.js\n" + |
|
" * http://chartjs.org/\n" + |
|
" * Version: {{ version }}\n" + |
|
" *\n" + |
|
" * Copyright 2016 Nick Downie\n" + |
|
" * Released under the MIT license\n" + |
|
" * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\n" + |
|
" */\n"; |
|
|
|
var preTestFiles = [ |
|
'./node_modules/moment/min/moment.min.js', |
|
]; |
|
|
|
var testFiles = [ |
|
'./test/mockContext.js', |
|
'./test/*.js', |
|
|
|
// Disable tests which need to be rewritten based on changes introduced by |
|
// the following changes: https://github.com/chartjs/Chart.js/pull/2346 |
|
'!./test/core.layoutService.tests.js', |
|
'!./test/defaultConfig.tests.js', |
|
]; |
|
|
|
gulp.task('build', buildTask); |
|
gulp.task('coverage', coverageTask); |
|
gulp.task('watch', watchTask); |
|
gulp.task('bump', bumpTask); |
|
gulp.task('release', ['build'], releaseTask); |
|
gulp.task('jshint', jshintTask); |
|
gulp.task('test', ['jshint', 'validHTML', 'unittest']); |
|
gulp.task('size', ['library-size', 'module-sizes']); |
|
gulp.task('server', serverTask); |
|
gulp.task('validHTML', validHTMLTask); |
|
gulp.task('unittest', unittestTask); |
|
gulp.task('unittestWatch', unittestWatchTask); |
|
gulp.task('library-size', librarySizeTask); |
|
gulp.task('module-sizes', moduleSizesTask); |
|
gulp.task('_open', _openTask); |
|
gulp.task('dev', ['server', 'default']); |
|
|
|
gulp.task('default', ['build', 'watch']); |
|
|
|
|
|
function buildTask() { |
|
|
|
var bundled = browserify('./src/chart.js') |
|
.bundle() |
|
.pipe(source('Chart.bundle.js')) |
|
.pipe(insert.prepend(header)) |
|
.pipe(streamify(replace('{{ version }}', package.version))) |
|
.pipe(gulp.dest(outDir)) |
|
.pipe(streamify(uglify())) |
|
.pipe(insert.prepend(header)) |
|
.pipe(streamify(replace('{{ version }}', package.version))) |
|
.pipe(streamify(concat('Chart.bundle.min.js'))) |
|
.pipe(gulp.dest(outDir)); |
|
|
|
var nonBundled = browserify('./src/chart.js') |
|
.ignore('moment') |
|
.bundle() |
|
.pipe(source('Chart.js')) |
|
.pipe(insert.prepend(header)) |
|
.pipe(streamify(replace('{{ version }}', package.version))) |
|
.pipe(gulp.dest(outDir)) |
|
.pipe(streamify(uglify())) |
|
.pipe(insert.prepend(header)) |
|
.pipe(streamify(replace('{{ version }}', package.version))) |
|
.pipe(streamify(concat('Chart.min.js'))) |
|
.pipe(gulp.dest(outDir)); |
|
|
|
return merge(bundled, nonBundled); |
|
|
|
} |
|
|
|
/* |
|
* Usage : gulp bump |
|
* Prompts: Version increment to bump |
|
* Output: - New version number written into package.json & bower.json |
|
*/ |
|
function bumpTask(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), |
|
oldVersion = package.version; |
|
|
|
// 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)); |
|
|
|
var oldCDN = 'https://cdnjs.cloudflare.com/ajax/libs/Chart.js/'+oldVersion+'/Chart.min.js', |
|
newCDN = 'https://cdnjs.cloudflare.com/ajax/libs/Chart.js/'+newVersion+'/Chart.min.js'; |
|
|
|
gulp.src(['./README.md']) |
|
.pipe(replace(oldCDN, newCDN)) |
|
.pipe(gulp.dest('./')); |
|
|
|
complete(); |
|
}); |
|
} |
|
|
|
|
|
function releaseTask() { |
|
exec('git tag -a v' + package.version); |
|
} |
|
|
|
|
|
function jshintTask() { |
|
return gulp.src(srcDir + '**/*.js') |
|
.pipe(jshint('config.jshintrc')) |
|
.pipe(jshint.reporter('jshint-stylish')) |
|
.pipe(jshint.reporter('fail')); |
|
} |
|
|
|
|
|
function validHTMLTask() { |
|
return gulp.src('samples/*.html') |
|
.pipe(htmlv()); |
|
} |
|
|
|
function startTest() { |
|
var files = ['./src/**/*.js']; |
|
Array.prototype.unshift.apply(files, preTestFiles); |
|
Array.prototype.push.apply(files, testFiles); |
|
return files; |
|
} |
|
|
|
function unittestTask() { |
|
return gulp.src(startTest()) |
|
.pipe(karma({ |
|
configFile: 'karma.conf.ci.js', |
|
action: 'run' |
|
})); |
|
} |
|
|
|
function unittestWatchTask() { |
|
return gulp.src(startTest()) |
|
.pipe(karma({ |
|
configFile: 'karma.conf.js', |
|
action: 'watch' |
|
})); |
|
} |
|
|
|
function coverageTask() { |
|
return gulp.src(startTest()) |
|
.pipe(karma({ |
|
configFile: 'karma.coverage.conf.js', |
|
action: 'run' |
|
})); |
|
} |
|
|
|
function librarySizeTask() { |
|
return gulp.src('dist/Chart.bundle.min.js') |
|
.pipe(size({ |
|
gzip: true |
|
})); |
|
} |
|
|
|
function moduleSizesTask() { |
|
return gulp.src(srcDir + '**/*.js') |
|
.pipe(uglify({ |
|
preserveComments: 'some' |
|
})) |
|
.pipe(size({ |
|
showFiles: true, |
|
gzip: true |
|
})); |
|
} |
|
|
|
function watchTask() { |
|
if (util.env.test) { |
|
return gulp.watch('./src/**', ['build', 'unittest', 'unittestWatch']); |
|
} |
|
return gulp.watch('./src/**', ['build']); |
|
} |
|
|
|
function serverTask() { |
|
connect.server({ |
|
port: 8000 |
|
}); |
|
} |
|
|
|
// Convenience task for opening the project straight from the command line |
|
|
|
function _openTask() { |
|
exec('open http://localhost:8000'); |
|
exec('subl .'); |
|
}
|
|
|