-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
142 lines (110 loc) · 3.93 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'),
gutil = require('gulp-util'),
jshint = require('gulp-jshint'),
stylish = require('jshint-stylish'),
concat = require('gulp-concat'),
sass = require('gulp-sass'),
bowerFiles = require('gulp-bower-files'),
es = require('event-stream'),
autoprefixer = require('gulp-autoprefixer'),
inject = require('gulp-inject'),
rimraf = require('gulp-rimraf'),
runSequence = require('run-sequence'),
open = require('open'),
shell = require('gulp-shell'),
watch = require('gulp-watch');
// Modules for webserver and livereload
var refresh = require('gulp-livereload'),
lrserver = require('tiny-lr')(),
express = require('express'),
livereload = require('connect-livereload'),
livereloadport = 35729,
serverport = 5000;
var paths = {
sass: 'app/styles/**/*.scss',
css: 'app/styles/**/*.css',
js: 'app/scripts/**/*.js',
views: 'app/views/**/*.html',
index: 'app/index.html'
};
// Set up an express server (not starting it yet)
var server = express();
server.use(livereload({port: livereloadport}));
server.use(express.static('./www'));
gulp.task('dev', ['build'], function() {
server.listen(serverport);
lrserver.listen(livereloadport);
watch({ glob: [paths.css, paths.sass] }, ['styles.watch']);
watch({ glob: paths.js },['scripts.watch']);
watch({ glob: 'app/**/*.html' }, ['views']);
setTimeout(function () {
open("http://localhost:5000");
}, 1000);
});
gulp.task('build', function () {
runSequence('clean', ['styles', 'scripts', 'bower_components', 'assets'], 'views');
});
gulp.task('clean', function () {
return gulp.src('www/**/*', { read: false }).pipe(rimraf());
});
gulp.task('scripts', function() {
return gulp.src(paths.js)
.pipe(jshint())
.pipe(jshint.reporter(stylish))
.pipe(gulp.dest('www/scripts/'))
.pipe(refresh(lrserver));
});
gulp.task('bower_components', function () {
return gulp.src('bower_components/**/*.*')
.pipe(gulp.dest('www/bower_components'))
.pipe(refresh(lrserver));
});
gulp.task('assets', function () {
return gulp.src('assets/**/*.*')
.pipe(gulp.dest('www/assets'))
.pipe(refresh(lrserver));
});
gulp.task('styles', function() {
return gulp.src(paths.css)
.pipe(autoprefixer("last 2 versions", "> 1%", "ie 8"))
.pipe(gulp.dest('www/styles/'))
.pipe(refresh(lrserver));
});
gulp.task('views', function() {
return runSequence('views.index', 'views.templates');
});
gulp.task('views.index', function () {
gulp.src('app/index.html')
.pipe(inject(gulp.src(['www/scripts/**/*.js', 'www/styles/**/*.css']),
{ ignorePath: '/www', addRootSlash: false }))
.pipe(inject(bowerFiles({ read: false }),
{ starttag: '<!-- inject:lib:{{ext}} -->', addRootSlash: false }))
.pipe(gulp.dest('www/'))
.pipe(refresh(lrserver));
});
gulp.task('views.templates', function () {
gulp.src(paths.views)
.pipe(gulp.dest('www/views/'))
.pipe(refresh(lrserver));
});
/* watch specific tasks */
// these exist because addition or removal of js/css files need
// to retrigger index.html injection. we don't want to re-build
// on every change, but we need to rebuild index.html for these.
gulp.task('scripts.watch', function () {
return runSequence('scripts', 'views.index');
});
gulp.task('styles.watch', function () {
return runSequence('styles', 'views.index');
});
/* mobile build and emulation emulation */
gulp.task('ios', function () {
runSequence('build', 'ios.build');
});
// genymotion needs to have your vm running (or a device plugged in and ready to go)
// before you run this
gulp.task('android', function () {
runSequence('build', 'android.build');
});
gulp.task('ios.build', shell.task(['ionic build ios', 'ionic emulate ios']));
gulp.task('android.build', shell.task(['ionic build android', 'ionic run android']));