-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
88 lines (76 loc) · 2.54 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
var gulp = require('gulp');
var webserver = require('gulp-webserver');
var inject = require('gulp-inject');
var print = require('gulp-print');
var filesort = require('gulp-angular-filesort');
var bowerFiles = require('gulp-main-bower-files');
var minifyHtml = require('gulp-minify-html');
var angularTemplatecache = require('gulp-angular-templatecache');
var watch = require('gulp-watch');
var batch = require('gulp-batch');
var sass = require('gulp-sass');
var config = {
htmltemplates: './src/**/*.html',
templateCache: {
file: 'app.templates.js',
options: {
module: 'app',
standAlone: false
}
},
temp: './.tmp/'
};
gulp.task('webserver', function() {
gulp.src('.')
.pipe(webserver({
livereload: true,
directoryListing: true,
open: true
}));
});
gulp.task('build', ['copy-bower', 'copy-src', 'copy-assets', 'compile-sass', 'create-template-cache'], function () {
var target = gulp.src('./src/app/index.html');
// It's not necessary to read the files (will speed up things), we're only after their paths:
var appSources = gulp.src(['./build/src/**/*.js', './build/app.templates.js']).pipe(filesort()).pipe(print());
var bowerSources = gulp.src('./bower.json').pipe(bowerFiles()).pipe(print());
var styleSources = gulp.src(['./build/styles/**/*']).pipe(print());
return target
.pipe(inject(appSources, {name: 'app'}))
.pipe(inject(styleSources, {name: 'app'}))
.pipe(inject(bowerSources, {name: 'bower'}))
.pipe(gulp.dest('./build'));
});
gulp.task('watch', function () {
watch('./src/**/*', batch(function (events, done) {
gulp.start('build', done);
}));
});
gulp.task('copy-bower', function () {
return gulp.src('./bower.json')
.pipe(bowerFiles())
.pipe(gulp.dest('./build/bower_components'));
});
gulp.task('copy-src', function () {
return gulp.src(['./src/**/*.js'])
.pipe(filesort())
.pipe(gulp.dest('./build/src'));
});
gulp.task('copy-assets', function () {
return gulp.src('./src/assets/*')
.pipe(gulp.dest('./build/assets'));
});
gulp.task('compile-sass', function () {
return gulp.src('./src/**/*.scss')
.pipe(sass.sync().on('error', sass.logError))
.pipe(gulp.dest('./build/styles'));
});
gulp.task('create-template-cache', function () {
return gulp
.src(config.htmltemplates)
.pipe(minifyHtml({empty: true}))
.pipe(angularTemplatecache(
config.templateCache.file,
config.templateCache.options
))
.pipe(gulp.dest('./build/'));
})