-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
111 lines (100 loc) · 2.63 KB
/
gulpfile.js
File metadata and controls
111 lines (100 loc) · 2.63 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
/**
* To clean use: `gulp clean`
* To build use: `gulp build` , or just `ionic serve` and wait
*/
//dependencies
var gulp = require('gulp');
var concat = require('gulp-concat');
var sass = require('gulp-sass');
var minifyCss = require('gulp-minify-css');
var rename = require('gulp-rename');
var browserify = require('browserify');
var babelify = require('babelify');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
var htmlmin = require('gulp-htmlmin');
var ngAnnotate = require('gulp-ng-annotate');
var replace = require('gulp-replace');
var del = require('del');
/** params **/
var PUBLIC_PATH = './www';
var ASSETS_DIR = 'assets';
var ASSETS_PATH = PUBLIC_PATH+'/'+ASSETS_DIR;
var isDevelopment = true;
var isProduction = !isDevelopment;
var paths = {
js: ['./src/js/**/*.js'],
sass: ['./src/scss/**/*.scss'],
tpl: ['./src/**/*.html'],
idx: ['./src/index.html']
};
/** Tasks **/
gulp.task('default', []);
//Build
var buildTasks = ['browserify','sass','htmlify'];
if(isDevelopment){
//Add watch in development
buildTasks.push('watch');
}
gulp.task('build', buildTasks);
//Watch
gulp.task('watch', function() {
gulp.watch(paths.idx, ['htmlify-idx']);
gulp.watch(paths.tpl, ['htmlify-tpl']);
gulp.watch(paths.sass, ['sass']);
gulp.watch(paths.js, ['browserify']);
});
//Browserify
gulp.task('browserify',function(){
return browserify({
entries:'./src/js/app.js',
debug: (isDevelopment?true:false),
transform: ['babelify']
})
.bundle()
.pipe(source('./bundle.js'))
.pipe(buffer())
.pipe(ngAnnotate())
.pipe(gulp.dest(ASSETS_PATH));
});
//Sass
gulp.task('sass', function(done) {
gulp.src('./src/scss/app.scss')
.pipe(sass({
errLogToConsole: true
}))
.pipe(gulp.dest(ASSETS_PATH))
.pipe(minifyCss({
keepSpecialComments: 0
}))
.pipe(rename({ extname: '.min.css' }))
.pipe(gulp.dest(ASSETS_PATH))
.on('end', done);
});
//html
gulp.task('htmlify', ['htmlify-idx','htmlify-tpl']);
gulp.task('htmlify-idx', function() {
return gulp.src('./src/index.html')
.pipe(replace('${ASSETS}', ASSETS_DIR))
.pipe(htmlmin({
collapseWhitespace:true,
removeComments:true
}))
.pipe(gulp.dest(PUBLIC_PATH));
});
gulp.task('htmlify-tpl', function() {
return gulp.src('./src/templates/**/*.html')
.pipe(htmlmin({
collapseWhitespace:true,
removeComments:true
}))
.pipe(gulp.dest(ASSETS_PATH));
});
//Clean
gulp.task('clean', function(){
del([
PUBLIC_PATH+'/index.html', //the old index.html
ASSETS_PATH+'/**/*', //all in assets folder
//'!dist/mobile/deploy.json' negate pattern for not delete
]);
});