blob: 53392b3d2e4c505f2ef12573db6ebd8270ad4f5e [file] [log] [blame]
Matteo Scandolo46b56102015-12-16 14:23:08 -08001'use strict';
2
3var gulp = require('gulp');
4var browserSync = require('browser-sync').create();
5var inject = require('gulp-inject');
6var runSequence = require('run-sequence');
7var angularFilesort = require('gulp-angular-filesort');
8var babel = require('gulp-babel');
9var wiredep = require('wiredep').stream;
10var del = require('del');
11
12module.exports = function(options){
13
14 // open in browser with sync and proxy to 0.0.0.0
15 gulp.task('browser', function() {
16 browserSync.init({
17 // reloadDelay: 500,
18 // logLevel: 'debug',
19 // logConnections: true,
20 startPath: '#/',
21 snippetOptions: {
22 rule: {
23 match: /<!-- browserSync -->/i
24 }
25 },
26 server: {
27 baseDir: options.src,
28 // routes: {
29 // '/api': options.api,
30 // '/xosHelpers/src': options.helpers
31 // }
32 }
33 });
34
35 gulp.watch(options.src + 'js/**/*.js', ['js-watch']);
36
37 gulp.watch(options.src + 'vendor/**/*.js', ['bower'], function(){
38 browserSync.reload();
39 });
40 gulp.watch(options.src + '**/*.html', function(){
41 browserSync.reload();
42 });
43 gulp.watch(options.src + '**/*.css', function(){
44 browserSync.reload();
45 });
46 });
47
48 // transpile js with sourceMaps
49 gulp.task('babel', function(){
50 return gulp.src([options.scripts + '**/*.js'])
51 .pipe(babel({sourceMaps: true}))
52 .pipe(gulp.dest(options.tmp));
53 });
54
55 // inject scripts
56 gulp.task('injectScript', function(){
57 console.log(options.tmp);
58 runSequence(
59 'cleanTmp',
60 'babel',
61 function() {
62 return gulp.src(options.src + 'index.html')
63 .pipe(
64 inject(
65 gulp.src([
66 options.tmp + '**/*.js',
67 options.api + '*.js',
68 options.helpers + '**/*.js'
69 ])
70 // .pipe(debug({title: 'unicorn:'}))
71 .pipe(angularFilesort()),
72 {
73 ignorePath: [options.src, '/../../ngXosLib']
74 }
75 )
76 )
77 .pipe(gulp.dest(options.src));
78 }
79 );
80 });
81
82 // inject CSS
83 gulp.task('injectCss', function(){
84 return gulp.src(options.src + 'index.html')
85 .pipe(
86 inject(
87 gulp.src(options.src + 'css/*.css'),
88 {
89 ignorePath: [options.src]
90 }
91 )
92 )
93 .pipe(gulp.dest(options.src));
94 });
95
96 // inject bower dependencies with wiredep
97 gulp.task('bower', function () {
98 return gulp.src(options.src + 'index.html')
99 .pipe(wiredep({devDependencies: true}))
100 .pipe(gulp.dest(options.src));
101 });
102
103 gulp.task('js-watch', ['injectScript'], function(){
104 browserSync.reload();
105 });
106
107 gulp.task('cleanTmp', function(){
108 return del([options.tmp + '**/*']);
109 });
110
111 gulp.task('serve', function() {
112 runSequence(
113 'bower',
114 'injectScript',
115 'injectCss',
116 ['browser']
117 );
118 });
119};