-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
108 lines (89 loc) · 2.72 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
/*
Compiles less to compressed css with autoprefixing and source maps
Concatinates Javascript into one, minified file.
Livereloads on changes to coffee, less, and blade templates
Runs PHPUnit tests
Watches less, js, blade, and phpunit
Default tasks less, phpunit, watch
*/
var gulp = require('gulp');
var gutil = require('gulp-util');
var notify = require('gulp-notify');
var less = require('gulp-less');
var autoprefix = require('gulp-autoprefixer');
var phpunit = require('gulp-phpunit');
var concat = require('gulp-concat');
var jsmin = require('gulp-jsmin');
var rename = require('gulp-rename');
var path = require('path');
var clean = require('gulp-clean');
// livereload
var livereload = require('gulp-livereload');
var lr = require('tiny-lr');
var server = lr();
//Source less directories
var lessDir = 'app/assets/less';
//Target css directories
var targetCSSDir = 'public/css';
// js directory
var jsDir = 'app/assets/js';
// Target js directory
var targetJsDir = 'public/js';
// blade directory
var bladeDir = 'app/views';
// Tasks
/* LESS */
gulp.task('clean-css', function () {
return gulp.src(targetCSSDir, {read: false})
.pipe(clean());
});
gulp.task('less', ['clean-css'], function() {
return gulp.src(lessDir + '/**/*.less')
.pipe(less({
paths: [ path.join(__dirname, 'less', 'includes') ],
style: 'compressed',
sourceMap: true
}))
.pipe(concat('styles.min.css'))
.pipe(gulp.dest(targetCSSDir))
.pipe(livereload(server))
.pipe(notify('LESS compiled, prefixed, compressed.'));
});
/* Blade Templates */
gulp.task('blade', function() {
return gulp.src(bladeDir + '/**/*.blade.php')
.pipe(livereload(server));
});
/* JS */
gulp.task('clean-scripts', function () {
return gulp.src(targetJsDir, {read: false})
.pipe(clean());
});
gulp.task('scripts', ['clean-scripts'], function() {
return gulp.src(jsDir + '/**/*.js')
.pipe(jsmin())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest(targetJsDir))
.pipe(notify('JS minified.'));
});
/* PHPUnit Tests */
gulp.task('phpunit', function() {
var options = {debug: false, notify: true};
gulp.src('app/tests/*.php')
.pipe(phpunit('', options))
.on('error', notify.onError({
title: "Failed Tests!",
message: "Error(s) occurred during testing..."
}));
});
/* Watcher */
gulp.task('watch', function() {
server.listen(35729, function(err) {
if(err) {console.log(err);}
gulp.watch(bladeDir + '/**/*.blade.php', ['blade']);
gulp.watch(lessDir + '/**/*.less', ['less']);
gulp.watch(jsDir + '/**/*.js', ['scripts']);
});
});
/* Default Task */
gulp.task('default', ['less', 'scripts', 'watch']);