-
Notifications
You must be signed in to change notification settings - Fork 1
/
gulpfile.js
106 lines (90 loc) · 2.86 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
'use strict';
var publishOptions = {
id: 'frau-angular-seed',
creds: {
key: '[TEMP]',
secret: process.env.S3_SECRET
},
devTag: process.env.TRAVIS_COMMIT,
version: process.env.TRAVIS_TAG
};
var frau = require('free-range-app-utils'),
gulp = require('gulp'),
pg = require('peanut-gallery'),
publisher = require('gulp-frau-publisher'),
ngHtml2Js = require("gulp-ng-html2js"),
minifyHtml = require("gulp-minify-html"),
uglify = require("gulp-uglify"),
gulpFilter = require( 'gulp-filter' ),
replace = require( 'gulp-replace' ),
streamify = require( 'gulp-streamify' ),
concat = require("gulp-concat");
var appFilename = 'app.js',
localAppResolver = frau.localAppResolver(),
appPublisher = publisher.app( publishOptions );
function getTarget() {
return (process.env.TRAVIS === 'true') ? appPublisher.getLocation()
: localAppResolver.getUrl();
}
/* Replacements used in compiled code */
function replaceFlagsInDist( path, releaseBuild ) {
var filter = gulpFilter( ['**/*.css', '**/*.js', '**/*.html'] );
var debugPattern = /\s*?\/\/#debug(.|\s)*?\/\/#enddebug/;
var stream = gulp.src( './dist/**' )
.pipe( filter )
.pipe( streamify( replace( /\$APP_PATH\$/gi, path ) ) );
if( releaseBuild ) {
stream = stream.pipe( streamify(
replace( debugPattern, '' )
) ).pipe( streamify(
replace( "'$CORS$',", "" )
) );
} else {
stream = stream.pipe( streamify(
replace( "$CORS$", 'http://*:3000/**' )
) );
}
return stream.pipe( gulp.dest( 'dist' ) )
}
gulp.task( 'replace-flags', function() {
return replaceFlagsInDist( getTarget(), (process.env.TRAVIS === 'true') );
} );
gulp.task('appconfig', ['replace-flags'], function() {
var target = getTarget();
return frau.appConfigBuilder.buildStream( target + appFilename )
.pipe( gulp.dest('dist') );
});
gulp.task('appresolver', function() {
localAppResolver.host();
});
gulp.task( 'publish-release', function( cb ) {
gulp.src('./dist/**')
.pipe( appPublisher.getStream() )
.on( 'end', function() {
var message = '[Deployment available online](' + appPublisher.getLocation() + appFilename + ')';
pg.comment( message, {}, function( error, response ) {
if( error )
return cb( JSON.stringify( error ) );
cb();
} );
} );
});
gulp.task('html2js',function(){
return gulp.src("./src/**/*.html").
pipe(minifyHtml({
empty: true,
spare: true,
quotes: true
})).
pipe(ngHtml2Js({
moduleName: "frau.templates",
prefix: ""
})).
pipe(concat("views.min.js")).
pipe(uglify()).
pipe(gulp.dest("./dist"));
});
gulp.task( 'copy-resources-to-dist', function() {
return gulp.src( './src/resources/**/*.*' )
.pipe( gulp.dest( 'dist/resources' ) );
} );