-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
131 lines (105 loc) · 3.26 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
121
122
123
124
125
126
127
128
129
130
131
"use strict";
/**
* Created by raduw on 20.04.2015.
*/
var gulp = require('gulp'),
path = require('path'),
less = require('gulp-less'),
autoprefixer = require('gulp-autoprefixer'),
minifyCss = require('gulp-minify-css'),
rename = require('gulp-rename'),
tsCompiler = require('gulp-typescript'),
bower = require('gulp-bower2'),
mainBowerFiles = require('main-bower-files'),
merge = require('merge2'),
tsd = require('gulp-tsd'),
karma = require('karma'),
del = require('del'),
gutil = require('gulp-util'),
karmaParseConfig = require('karma/lib/config').parseConfig;
var baseDir = './src/';
// gulp.task('default', ['typescript'], function () {
// console.log("running the defaultTask with it's dependencies");
// });
//
gulp.task('server', function(){
});
gulp.task('less', function () {
console.log("building css from less files");
return gulp.src(baseDir + 'less/**/*.less')
.pipe(less({
paths: [path.join(baseDir, 'less')]
}))
.pipe(autoprefixer({
browsers: ['last 2 versions']
}))
.pipe(gulp.dest(baseDir +'css'))
.pipe(minifyCss())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest(baseDir +'css'));
});
gulp.task('typescript', function () {
console.log("transpiling typescript files to js");
return gulp.src( baseDir +'ts/**/*.ts').
pipe(tsCompiler({
target: 'es5',
}))
.pipe(gulp.dest(baseDir +'js'));
});
gulp.task('tsd', function (callback) {
tsd({
command: 'reinstall',
config: './tsd.json'
}, callback);
});
// fetches all bower dependencies (from bower.json)
gulp.task('bower', function(){
console.log("fetching bower dependencies (listed in bower.json)");
gulp.src( './manual_download/**/*').
pipe(gulp.dest(baseDir +'lib/'));
bower()
.pipe(gulp.dest('bower_components/'));
return gulp.src(mainBowerFiles(),{base: './bower_components'})
.pipe(gulp.dest(baseDir +'lib/'))
});
gulp.task('copyDirectiveTemplates', function () {
return gulp.src( baseDir +'ts/**/*.html')
.pipe(gulp.dest(baseDir +'js'));
});
gulp.task('dependencies', ['tsd','bower'],function () {
console.log("fetching all dependencies");
});
function runKarma(configFilePath, options, cb) {
configFilePath = path.resolve(configFilePath);
var server = karma.server;
var log=gutil.log, colors=gutil.colors;
var config = karmaParseConfig(configFilePath, {});
Object.keys(options).forEach(function(key) {
config[key] = options[key];
});
server.start(config, function(exitCode) {
log('Karma has exited with ' + colors.red(exitCode));
cb();
process.exit(exitCode);
});
}
/** actual tasks */
/** single run */
gulp.task('test', function(cb) {
runKarma('karma.conf.js', {
autoWatch: false,
singleRun: true
}, cb);
});
/** continuous ... using karma to watch (feel free to circumvent that;) */
gulp.task('test-watch', function(cb) {
runKarma('karma.conf.js', {
autoWatch: true,
singleRun: false
}, cb);
});
gulp.task('watch', function () {
gulp.watch(baseDir + 'ts/**/*.ts', ['typescript']);
gulp.watch(baseDir + 'ts/**/*.html', ['copyDirectiveTemplates'])
gulp.watch(baseDir + 'less/**/*.less', ['less'])
});