blob: 0626afdc6f5dc708c2ce15936dadf650975e5be8 [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');
Matteo Scandolo8942e042015-12-16 14:41:21 -080011var httpProxy = require('http-proxy');
12
13const environment = process.env.NODE_ENV;
14
15if (environment){
16 var conf = require(`../env/${environment}.js`);
17}
18else{
19 var conf = require('../env/default.js')
20}
21
22console.log(conf);
23
24var proxy = httpProxy.createProxyServer({
25 target: conf.host || 'http://0.0.0.0:9999'
26});
27
28proxy.on('error', function(error, req, res) {
29 res.writeHead(500, {
30 'Content-Type': 'text/plain'
31 });
32
33 console.error('[Proxy]', error);
34});
Matteo Scandolo46b56102015-12-16 14:23:08 -080035
36module.exports = function(options){
37
38 // open in browser with sync and proxy to 0.0.0.0
39 gulp.task('browser', function() {
40 browserSync.init({
41 // reloadDelay: 500,
42 // logLevel: 'debug',
43 // logConnections: true,
44 startPath: '#/',
45 snippetOptions: {
46 rule: {
47 match: /<!-- browserSync -->/i
48 }
49 },
50 server: {
51 baseDir: options.src,
Matteo Scandolo8942e042015-12-16 14:41:21 -080052 middleware: function(req, res, next){
53 if(
54 req.url.indexOf('autoscaledata') !== -1
55 ){
56 proxy.web(req, res);
57 }
58 else{
59 next();
60 }
61 }
Matteo Scandolo46b56102015-12-16 14:23:08 -080062 }
63 });
64
65 gulp.watch(options.src + 'js/**/*.js', ['js-watch']);
66
67 gulp.watch(options.src + 'vendor/**/*.js', ['bower'], function(){
68 browserSync.reload();
69 });
70 gulp.watch(options.src + '**/*.html', function(){
71 browserSync.reload();
72 });
73 gulp.watch(options.src + '**/*.css', function(){
74 browserSync.reload();
75 });
76 });
77
78 // transpile js with sourceMaps
79 gulp.task('babel', function(){
80 return gulp.src([options.scripts + '**/*.js'])
81 .pipe(babel({sourceMaps: true}))
82 .pipe(gulp.dest(options.tmp));
83 });
84
85 // inject scripts
86 gulp.task('injectScript', function(){
Matteo Scandolo46b56102015-12-16 14:23:08 -080087 runSequence(
88 'cleanTmp',
89 'babel',
90 function() {
91 return gulp.src(options.src + 'index.html')
92 .pipe(
93 inject(
94 gulp.src([
95 options.tmp + '**/*.js',
96 options.api + '*.js',
97 options.helpers + '**/*.js'
98 ])
99 // .pipe(debug({title: 'unicorn:'}))
100 .pipe(angularFilesort()),
101 {
102 ignorePath: [options.src, '/../../ngXosLib']
103 }
104 )
105 )
106 .pipe(gulp.dest(options.src));
107 }
108 );
109 });
110
111 // inject CSS
112 gulp.task('injectCss', function(){
113 return gulp.src(options.src + 'index.html')
114 .pipe(
115 inject(
116 gulp.src(options.src + 'css/*.css'),
117 {
118 ignorePath: [options.src]
119 }
120 )
121 )
122 .pipe(gulp.dest(options.src));
123 });
124
125 // inject bower dependencies with wiredep
126 gulp.task('bower', function () {
127 return gulp.src(options.src + 'index.html')
128 .pipe(wiredep({devDependencies: true}))
129 .pipe(gulp.dest(options.src));
130 });
131
132 gulp.task('js-watch', ['injectScript'], function(){
133 browserSync.reload();
134 });
135
136 gulp.task('cleanTmp', function(){
137 return del([options.tmp + '**/*']);
138 });
139
140 gulp.task('serve', function() {
141 runSequence(
142 'bower',
143 'injectScript',
144 'injectCss',
145 ['browser']
146 );
147 });
148};