forked from Thermionix/ircanywhere
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
executable file
·174 lines (156 loc) · 5.57 KB
/
gulpfile.js
File metadata and controls
executable file
·174 lines (156 loc) · 5.57 KB
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
var gulp = require('gulp'),
less = require('gulp-less'),
concatCss = require('gulp-concat-css'),
handlebars = require('gulp-handlebars'),
uglify = require('gulp-uglifyjs'),
del = require('del'),
jshint = require('gulp-jshint'),
mocha = require('gulp-mocha'),
concat = require('gulp-concat'),
wrap = require('gulp-wrap'),
declare = require('gulp-declare'),
sourcemaps = require('gulp-sourcemaps');
gulp.task('clean', function() {
del.sync(['./client/build'], {force: true});
});
gulp.task('css', function() {
gulp.src([
'client/ext/*.css',
'./client/less/**/!(mobile)*.less', // make sure mobile.less is last
'./client/less/mobile.less',
'./modules/*/client/less/**/*.less'
])
.pipe(less({
paths: ['./client/less']
}))
.pipe(concatCss('ircanywhere.css'))
.pipe(gulp.dest('./client/build'));
});
gulp.task('templates', function() {
gulp.src(['./client/templates/**/*.hbs', './modules/*/client/templates/**/*.hbs'])
.pipe(handlebars({
handlebars: require('ember-handlebars')
}))
.pipe(wrap('Ember.Handlebars.template(<%= contents %>)'))
.pipe(declare({
namespace: 'Ember.TEMPLATES',
noRedeclare: true,
processName: function(filePath) {
return filePath.replace(__dirname + '/client/templates/', '').replace('.js', '');
}
}))
.pipe(gulp.dest('./client/build/templates'))
.pipe(uglify('templates.js', {
outSourceMap: true,
basePath: '/client/build/',
mangle: false,
output: {
source_map: {
file: 'templates.js.map',
root: '/'
}
}
}))
.pipe(gulp.dest('./client/build'))
});
gulp.task('templates:debug', function() {
gulp.src(['./client/templates/**/*.hbs', './modules/*/client/templates/**/*.hbs'])
.pipe(handlebars({
handlebars: require('ember-handlebars')
}))
.pipe(wrap('Ember.Handlebars.template(<%= contents %>)'))
.pipe(declare({
namespace: 'Ember.TEMPLATES',
noRedeclare: true,
processName: function(filePath) {
return filePath.replace(__dirname + '/client/templates/', '').replace('.js', '');
}
}))
.pipe(sourcemaps.init())
.pipe(concat('templates.js'))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./client/build'))
});
gulp.task('js', function() {
gulp.src(['./lib/*.js', './client/js/lib/*.js', './client/js/*.js', './client/js/helpers/*.js', './client/js/mixins/*.js', './client/js/routes/*.js', './client/js/models/*.js', './client/js/controllers/*.js', './client/js/components/*.js', './client/js/views/*.js', './modules/*/client/js/**/*.js'])
.pipe(gulp.dest('./client/build/js'))
.pipe(uglify('ircanywhere.js', {
outSourceMap: true,
basePath: '/client/build/',
mangle: false,
output: {
source_map: {
file: 'ircanywhere.js.map',
root: '/'
}
}
}))
.pipe(gulp.dest('./client/build'))
});
gulp.task('js:debug', function() {
gulp.src(['./lib/*.js', './client/js/lib/*.js', './client/js/*.js', './client/js/helpers/*.js', './client/js/mixins/*.js', './client/js/routes/*.js', './client/js/models/*.js', './client/js/controllers/*.js', './client/js/components/*.js', './client/js/views/*.js', './modules/*/client/js/**/*.js'])
.pipe(sourcemaps.init())
.pipe(concat('ircanywhere.js'))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./client/build'))
});
gulp.task('dependencies', function() {
gulp.src(['client/ext/jquery*.js', 'client/ext/handlebars*.js', 'client/ext/ember*.js', 'client/ext/sockjs*.js', './modules/*/client/deps/*.js'])
.pipe(gulp.dest('./client/build/ext'))
.pipe(uglify('dependencies.js', {
outSourceMap: true,
basePath: '/client/build/',
mangle: false,
output: {
source_map: {
file: 'dependencies.js.map',
root: '/'
}
}
}))
.pipe(gulp.dest('./client/build'))
});
gulp.task('dependencies:debug', function() {
gulp.src(['client/ext/jquery*.js', 'client/ext/handlebars*.js', 'client/ext/ember*.js', 'client/ext/sockjs*.js', './modules/*/client/deps/*.js'])
.pipe(sourcemaps.init())
.pipe(concat('dependencies.js'))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('client/build'))
});
gulp.task('static', function() {
gulp.src('./client/static/**')
.pipe(gulp.dest('./client/build'));
});
gulp.task('client-jshint', function () {
gulp.src(['./client/js/**/*.js'])
.pipe(jshint('./client/.jshintrc'))
.pipe(jshint.reporter('jshint-stylish'))
.pipe(jshint.reporter('fail'));
});
gulp.task('server-jshint', function () {
gulp.src(['./server/*.js'])
.pipe(jshint('./server/.jshintrc'))
.pipe(jshint.reporter('jshint-stylish'))
.pipe(jshint.reporter('fail'));
});
gulp.task('jshint', ['server-jshint', 'client-jshint']);
gulp.task('mocha', function () {
gulp.src('test/**/*.js', {read: false})
.pipe(mocha({reporter: 'dot'}));
});
gulp.task('css:watch', function() {
gulp.watch(['./client/less/**/*.less', './modules/*/client/less/**/*.less'], ['css']);
});
gulp.task('templates:watch', function() {
gulp.watch(['./client/templates/**/*.hbs', './modules/*/client/templates/**/*.hbs'], ['templates']);
});
gulp.task('js:watch', function() {
gulp.watch(['lib/*.js', 'client/js/**/*.js', './modules/*/client/js/**/*.js'], ['js']);
});
gulp.task('static:watch', function() {
gulp.watch(['client/static/**'], ['static']);
});
gulp.task('default', ['clean', 'css', 'templates', 'js', 'dependencies', 'static']);
gulp.task('watch', ['default', 'css:watch', 'templates:watch', 'js:watch', 'static:watch']);
gulp.task('test', ['jshint', 'mocha']);
gulp.task('debug', ['css', 'templates:debug', 'js:debug', 'dependencies:debug', 'static']);