-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
142 lines (128 loc) · 3.97 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
132
133
134
135
136
137
138
139
140
141
142
var gulp = require('gulp'),
connect = require('gulp-connect'),
uglify = require('gulp-uglify'),
concat = require('gulp-concat'),
jade = require('gulp-jade'),
minifyCSS = require('gulp-minify-css'),
karma = require('gulp-karma'),
zip = require('gulp-zip'),
del = require('del');
var testFiles = [
'test/test-main-js'
];
/**
* Our default task, starts the build server, to make sure all
* required files are present, then starts the server and watch
* tasks for development
**/
gulp.task('default', ['build', 'server', 'watch']);
/**
* Builds our source files into minified, rendered files,
* ready for production
**/
gulp.task('build', ['load', 'templates', 'styles', 'scripts']);
/**
* Creates a web server for serving our files @ localhost:3000
**/
gulp.task('server', function () {
connect.server({
root: 'dist',
port: 3000,
livereload: true
});
});
/**
* Watches our source files, and starts processing if any
* changes occurs
**/
gulp.task('watch', function () {
gulp.watch('./src/css/*.css', ['styles']);
gulp.watch('./src/js/**/*.js', ['scripts']);
gulp.watch('./src/**/*.jade', ['templates']);
});
/**
* Templates takes our source's .jade files and renders them in HTML
* in the /dist& folder, ready for produciton
**/
gulp.task('templates', [], function () {
var YOUR_LOCALS = {};
gulp.src('./src/views/*.jade')
.pipe(jade({
locals: YOUR_LOCALS
}))
.pipe(gulp.dest('./dist/views/'))
.pipe(connect.reload());
gulp.src('./src/index.jade')
.pipe(jade({
locals: YOUR_LOCALS
}))
.pipe(gulp.dest('./dist/'))
});
/**
* Scripts takes our source's .js files and uglifies them, and concatenate
* them into a single app.min.js file, ready for production
**/
gulp.task('scripts', [], function () {
return gulp.src(['./src/js/app.js', './src/js/services/*.js', './src/js/controllers/*.js', './src/js/config/*.js', './src/js/directives/*.js'])
.pipe(uglify())
.pipe(concat('app.min.js'))
.pipe(gulp.dest('dist/js/'))
.pipe(connect.reload());
});
/**
* Styles takes our source's .css files, concatenate them into a single file
* before minifying it, making t ready for production.
**/
gulp.task('styles', [], function () {
return gulp.src('./src/css/*.css')
.pipe(concat('style.min.css'))
.pipe(minifyCSS({keepBreaks: true}))
.pipe(gulp.dest('dist/css/'))
.pipe(connect.reload());
});
/**
* Load takes all our external dependencies, and add the minified versions
* to our dist/ folder, making the deployed version independant of external
* servers for these libraries(cdn)
**/
gulp.task('load', [], function () {
gulp.src('./bower_components/angular-mocks/angular-mocks.js*')
.pipe(gulp.dest('./dist/js/'));
gulp.src('./bower_components/**/*.min.js*')
.pipe(gulp.dest('./dist/js/'));
gulp.src('./bower_components/**/*.min.css')
.pipe(gulp.dest('./dist/css/'));
gulp.src('./bower_components/bootstrap/dist/fonts/*')
.pipe(gulp.dest('./dist/css/bootstrap/dist/fonts/'));
gulp.src('./manually_downloaded_components/**/*')
.pipe(gulp.dest('./dist/'));
});
/**
* Deploy makes the entire /dist/ folder into a zipped file, making it a complete,
* ready to install, DHIS 2 application.
*/
gulp.task('deploy', ['build'], function () {
return gulp.src(['dist/**/*', 'dist/*', 'manifest.webapp'])
.pipe(zip('ArchitectWirelessWebServices.zip'))
.pipe(gulp.dest('.'))
});
/**
* Empties the dist folder for a total scrub
*/
gulp.task('clean', function(cb) {
return del(['dist/*'], cb);
});
/**
* Runs our tests with Karma test-runner
**/
gulp.task('test', function () {
return gulp.src(testFiles)
.pipe(karma({
configFile: 'karma.conf.js',
action: 'run'
}))
.on('error', function (err) {
console.log(err);
this.emit('end');
});
});