added gh-pages publish task, added ref table to example
[tech-radar.git] / gulpfile.js
1 var gulp = require('gulp')
2 , pkg = require('./package.json')
3 , gutil = require('gulp-util')
4 , gkarma = require('gulp-karma')
5 , sass = require('gulp-sass')
6 , concat = require('gulp-concat')
7 , uglify = require('gulp-uglify')
8 , clean = require('gulp-clean')
9 , header = require('gulp-header')
10 , files
11 , paths;
12
13
14 banner = [
15 '/**',
16 ' * <%= pkg.name %>',
17 ' * @version v<%= pkg.version %>',
18 ' */',
19 ''
20 ].join('\n');
21
22 paths = {
23 DEPS: ['bower_components/chance/chance.js', 'bower_components/d3/d3.min.js']
24 };
25
26 files = {
27 LIB: 'bower_components/d3/*.min.js',
28 NS: 'src/namespaces.js',
29 SOURCE: 'src/**/*.js',
30 SPEC: 'test/**/*-spec.js',
31 STYLESHEETS: 'src/stylesheets/**/*.scss'
32 };
33
34 gulp.task('sass', function () {
35 gulp.src(files.STYLESHEETS)
36 .pipe(sass())
37 .pipe(gulp.dest('./dist/'));
38 });
39
40 gulp.task('concat', function () {
41 gulp.src([files.NS, files.SOURCE])
42 .pipe(concat('tech-radar.js'))
43 .pipe(header(banner, { pkg: pkg }))
44 .pipe(gulp.dest('./dist/'));
45 });
46 var clean = require('gulp-clean');
47
48 gulp.task('clean', function() {
49 gulp.src('./dist/', {read: false})
50 .pipe(clean({force: true}));
51 });
52
53 gulp.task('compress', function() {
54 gulp.src([files.NS, files.SOURCE])
55 .pipe(concat('tech-radar.min.js'))
56 .pipe(uglify({outSourceMap: true}))
57 .pipe(header(banner, { pkg: pkg }))
58 .pipe(gulp.dest('./dist/'))
59 });
60
61 gulp.task('deps', function () {
62 gulp.src(paths.DEPS.concat('./dist/**/*.*'))
63 .pipe(gulp.dest('./examples'));
64 });
65
66 gulp.task('dist', ['clean', 'concat', 'compress', 'sass']);
67 gulp.task('examples', ['clean', 'concat', 'compress', 'sass', 'deps']);
68
69 gulp.task('gh-pages', function () {
70 var ghpages = require('gh-pages')
71 , path = require('path')
72 , options = {};
73
74 options.logger = console.log.bind(this);
75
76 function callback(err) {
77 if (err) {
78 console.error('Error publishing to gh-pages', err);
79 } else {
80 console.log('Successfully published to gh-pages');
81 }
82 }
83
84 ghpages.publish(path.join(__dirname, './examples'), options, callback);
85 });
86
87 gulp.task('test', function (){
88 var karma;
89
90 karma = gkarma({
91 configFile: 'karma.conf.js',
92 action: 'run'
93 });
94
95 return gulp.src(
96 [files.LIB, files.NS, files.SOURCE, files.SPEC]
97 ).pipe(karma);
98 });