-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
executable file
·131 lines (114 loc) · 3.01 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
var gulp = require('gulp');
var browserify = require('browserify');
var source = require('vinyl-source-stream');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var utilities = require('gulp-util');
var del = require('del');
var jshint = require('gulp-jshint');
var buildProduction = utilities.env.production;
var lib = require('bower-files')({
"overrides": {
"bootstrap": {
"main": [
"less/bootstrap.less",
"dist/css/bootstrap.css",
"dist/js/bootstrap.js"
]
}
}
});
var browserSync = require('browser-sync').create();
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
// Task for code checker
gulp.task('jshint', function() {
return gulp.src(['js/*.js'])
.pipe(jshint())
.pipe(jshint.reporter('default'));
});
// Test gulp task in the terminal
gulp.task('myTask', function() {
console.log("Hello Gulp");
});
// Task for concat
gulp.task('concatInterface', function() {
return gulp.src(['./js/*-interface.js'])
.pipe(concat('allConcat.js'))
.pipe(gulp.dest('./tmp'));
});
// Task for browserify
gulp.task('jsBrowserify', ['concatInterface'], function() {
return browserify({
entries: ['./tmp/allConcat.js']
})
.bundle()
.pipe(source('app.js'))
.pipe(gulp.dest('./build/js'));
});
// Task for minification
gulp.task('minifyScripts', ['jsBrowserify'], function() {
return gulp.src('./build/js/app.js')
.pipe(uglify())
.pipe(gulp.dest('./build/js'));
});
// Task for bower_components
gulp.task('bowerJS', function() {
return gulp.src(lib.ext('js').files)
.pipe(concat('vendor.min.js'))
.pipe(uglify())
.pipe(gulp.dest('./build/js'));
});
// Task for css
gulp.task('bowerCSS', function() {
return gulp.src(lib.ext('css').files)
.pipe(concat('vendor.css'))
.pipe(gulp.dest('./build/css'));
});
// Combine bower tasks
gulp.task('bower', ['bowerJS', 'bowerCSS']);
// Task for cleaning
gulp.task('clean', function() {
return del(['build', 'temp']);
});
// Task for creating environments
gulp.task('build', ['clean'], function() {
if (buildProduction) {
gulp.start('minifyScripts');
} else {
gulp.start('jsBrowserify');
}
gulp.start('bower');
gulp.start('cssBuild')
});
// Task for server
gulp.task('server', ['build'], function() {
browserSync.init({
server: {
baseDir: './',
index: 'index.html'
}
});
gulp.watch(['js/*.js'], ['jsBuild']);
gulp.watch(['bower.json'], ['bowerBuild']);
gulp.watch(['*.html'], ['htmlBuild']);
gulp.watch(["scss/*.scss"], ['cssBuild']);
});
gulp.task('jsBuild', ['jsBrowserify', 'jshint'], function() {
browserSync.reload();
});
gulp.task('bowerBuild', ['bower'], function() {
browserSync.reload();
});
gulp.task('htmlBuild', function() {
browserSync.reload();
});
// Task for css
gulp.task('cssBuild', function() {
return gulp.src(['scss/*.scss'])
.pipe(sourcemaps.init())
.pipe(sass())
.pipe(sourcemaps.write())
.pipe(gulp.dest('./build/css'))
.pipe(browserSync.stream());
});