forked from GUMGA/components
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgulpfile.js
executable file
·120 lines (110 loc) · 2.79 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
var gulp = require('gulp')
, isTravis = process.env.TRAVIS || false
, hint = require('gulp-jshint')
, data = require('gulp-data')
, stylus = require('gulp-stylus')
, rename = require('gulp-rename')
, stylish = require('jshint-stylish')
, plato = require('gulp-plato')
, uglify = require('gulp-uglify')
, minifyCss = require('gulp-minify-css')
, concat = require('gulp-concat')
, sourcemaps = require('gulp-sourcemaps')
, Server = require('karma').Server
, plumber = require('gulp-plumber')
, babel = require('gulp-babel')
, bootstrap = require('bootstrap-styl')
, runSequence = require('run-sequence')
, paths = {
src: ['./src/**/*.js','!**/*Spec.js']
// , stylus: ['./src/**/**/*.styl']
, stylus: ['./src/index.styl']
, dist: ['./dist/']
};
/**
* Minifica o CSS escrito com stylus, renomeia e coloca no dir. dist.
*/
gulp.task('minify-css',function(){
return gulp.src(paths.stylus)
.pipe(stylus())
.pipe(concat('gumga.min.css'))
.pipe(minifyCss())
.pipe(gulp.dest('./dist'))
})
/**
* Minifica o JS, renomeia e coloca no dir. dist.
*/
gulp.task('minify-js',function(){
return gulp.src(paths.src)
.pipe(plumber())
.pipe(babel())
.pipe(concat('gumga.min.js'))
.pipe(uglify())
.pipe(gulp.dest('dist/'));
})
/**
* Executa o JSHint em cima dos arquivos Javascript.
*/
gulp.task('hint',function(){
return gulp.src(paths.src)
.pipe(hint())
.pipe(hint.reporter(stylish))
})
/**
* Executa os testes unitários.
*/
gulp.task('tests',function(done){
var config = {
configFile: __dirname + '/karma.conf.js',
singleRun: isTravis
};
var server = new Server(config,done);
server.start();
})
/**
* Reporta complexidade do código.
*/
gulp.task('plato', function () {
return gulp.src(paths.src)
.pipe(plato('report', {
jshint: {
options: {
strict: true
}
},
complexity: {
trycatch: true
}
}));
});
/**
* Usado para desenvolvimento,
* reexecuta as minificações CSS e JS a cada alteração.
*/
gulp.task('dev',['minify-js','minify-css'],function(){
gulp.watch(paths.src,['minify-js']);
gulp.watch(paths.stylus,['minify-css'])
});
/**
* Usado para desenvolvimento,
* reexecuta a minificação JS e os testes a cada alteração.
*/
gulp.task('tdd',function(){
gulp.watch('./src/**/*.js', runSequence('minify-js','tests'));
});
gulp.task('js-watch', function(){
gulp.watch(['./src/**/*.js','./index.html'], ['minify-js'])
})
/**
* Reporta cobertura de testes e complexidade do código.
*/
gulp.task('report',['plato']);
/**
* Valida qualidade do código com JSHint, executa os testes
* unitários e faz o report de cobertura e complexidade.
*/
gulp.task('ci-validate',['hint','tests']);
/**
* Executa as validações, minifica o CSS, JS e gera documentação.
*/
gulp.task('ci-build',['tests']);