11//Getting all dependencies to run all tasks
2+
3+ //Runners and compilers
24var gulp = require ( 'gulp' ) ;
35var concat = require ( 'gulp-concat' ) ;
4- var connect = require ( 'gulp-connect' ) ;
56var templateCache = require ( 'gulp-angular-templatecache' ) ;
67var inject = require ( 'gulp-inject' ) ;
7- var history = require ( 'connect-history-api-fallback' ) ;
8+ var sass = require ( 'gulp-sass' ) ;
9+ var less = require ( 'gulp-less' ) ;
10+ var merge = require ( 'merge-stream' ) ;
11+
12+ //Build and server config
13+ var browserSync = require ( 'browser-sync' ) . create ( ) ;
14+ var historyMiddleware = require ( 'connect-history-api-fallback' ) ( { } ) ;
815var config = require ( './config-build' ) ( ) ;
9- var historyMiddleware = history ( { } ) ;
16+
17+ //Config variables to may build all
18+ var appScript = config . distributionAssetsFolder + '/' + config . appScriptsFile ;
19+ var appStyle = config . distributionAssetsFolder + '/' + config . appStylesFile ;
20+ var appTemplateScript = config . distributionAssetsFolder + '/' + config . appTemplatesFile ;
21+ var appLanguageScript = config . distributionAssetsFolder + '/' + config . appLanguagesFile ;
22+ var vendorScript = config . distributionAssetsFolder + '/' + config . vendorScriptsFile ;
23+ var vendorStyle = config . distributionAssetsFolder + '/' + config . vendorStylesFile ;
24+
25+ //Variables to handle unit and end to end testing
26+ var Server = require ( 'karma' ) . Server ;
27+ var protractor = require ( "gulp-protractor" ) . protractor ;
1028
1129
1230//ALL TASK TO COMPILE, CONCAT AND COPY APP FILES TO DIST
@@ -26,7 +44,11 @@ gulp.task('app-scripts', function () {
2644//Concat and copy App CSS files to distribution folder
2745gulp . task ( 'app-styles' , function ( ) {
2846
29- return gulp . src ( config . assets . app . styles ) . pipe ( concat ( config . appStylesFile ) ) . pipe ( gulp . dest ( config . distributionAssetsFolder ) ) ;
47+ var sassStream = gulp . src ( config . assets . app . sassStyles ) . pipe ( sass ( ) ) ;
48+ var lessStream = gulp . src ( config . assets . app . lessStyles ) . pipe ( less ( ) ) ;
49+ var cssStream = gulp . src ( config . assets . app . styles ) ;
50+
51+ return merge ( sassStream , lessStream , cssStream ) . pipe ( concat ( config . appStylesFile ) ) . pipe ( gulp . dest ( config . distributionAssetsFolder ) ) ;
3052} ) ;
3153
3254//Compile, concat and copy App Template files to distribution folder
@@ -38,6 +60,12 @@ gulp.task('app-templates', function () {
3860 } ) ) . pipe ( gulp . dest ( config . distributionAssetsFolder ) ) ;
3961} ) ;
4062
63+ //Compile, concat and copy App Languages files to distribution folder
64+ gulp . task ( 'app-languages' , function ( ) {
65+
66+ return gulp . src ( config . assets . app . languages ) . pipe ( concat ( config . appLanguagesFile ) ) . pipe ( gulp . dest ( config . distributionAssetsFolder ) ) ;
67+ } ) ;
68+
4169
4270//ALL TASK TO COMPILE, CONCAT AND COPY VENDOR / THIRD PARTY FILES TO DIST
4371
@@ -57,40 +85,56 @@ gulp.task('vendor-styles', function () {
5785//MAIN TASKS TO RUN ALWAYS WITH ANOTHER TASKS AS DEPENDENCIES
5886
5987//Task to build, copy and inject all files inside a dist folder
60- gulp . task ( 'build-inject ' , [ 'direct-files' , 'app-scripts' , 'app-styles' , 'app-templates' , 'vendor-scripts' , 'vendor-styles' ] , function ( ) {
88+ gulp . task ( 'build' , [ 'direct-files' , 'app-scripts' , 'app-styles' , 'app-templates' , 'app-languages ', 'vendor-scripts' , 'vendor-styles' ] , function ( ) {
6189
62- var appScript = config . distributionAssetsFolder + '/' + config . appScriptsFile ;
63- var appStyle = config . distributionAssetsFolder + '/' + config . appStylesFile ;
64- var appTemplateScript = config . distributionAssetsFolder + '/' + config . appTemplatesFile ;
65- var vendorScript = config . distributionAssetsFolder + '/' + config . vendorScriptsFile ;
66- var vendorStyle = config . distributionAssetsFolder + '/' + config . vendorStylesFile ;
67-
68- return gulp . src ( 'dist/index.html' ) . pipe ( inject ( gulp . src ( [ vendorScript , appScript , appTemplateScript , vendorStyle , appStyle ] , { read : false } ) , { relative : true } ) ) . pipe ( gulp . dest ( 'dist' ) ) ;
90+ return gulp . src ( 'dist/index.html' ) . pipe ( inject ( gulp . src ( [ vendorScript , appScript , appTemplateScript , appLanguageScript , vendorStyle , appStyle ] , { read : false } ) , { relative : true } ) ) . pipe ( gulp . dest ( 'dist' ) ) ;
6991} ) ;
7092
7193//Task to run a Dev Server
72- gulp . task ( 'server' , function ( ) {
73- connect . server ( {
74- port : 8000 ,
75- root : 'dist' ,
76- livereload : true ,
77- middleware : function ( connect , opt ) {
78- return [ historyMiddleware ] ;
79- }
80- } ) ;
81- } ) ;
94+ gulp . task ( 'serve' , function ( ) {
8295
83- //Task to apply live reload inside a Dev Server
84- gulp . task ( 'reload' , function ( ) {
85- gulp . src ( 'dist/**/*' ) . pipe ( connect . reload ( ) ) ;
86- } ) ;
96+ browserSync . init ( {
97+ server : {
98+ baseDir : 'dist'
99+ } ,
100+ middleware : [ historyMiddleware ]
101+ } ) ;
87102
88- //Task to detect dev changes and then rebuild all dependencies calling the main task 'build-inject'
89- gulp . task ( 'rebuild' , function ( ) {
90- gulp . watch ( [ 'config-build.js' , 'app/**/*' ] , [ 'build-inject' , 'reload' ] ) ;
103+ //Watch for apply live reload inside a Dev Server
104+ gulp . watch ( "dist/**/*" ) . on ( 'change' , browserSync . reload ) ;
105+ //Watch for to detect dev changes and then rebuild all dependencies calling the tasks properly
106+ gulp . watch ( config . directFiles , [ 'direct-files' ] , function ( ) {
107+ gulp . src ( 'dist/index.html' ) . pipe ( inject ( gulp . src ( [ vendorScript , appScript , appTemplateScript , appLanguageScript , vendorStyle , appStyle ] , { read : false } ) , { relative : true } ) ) . pipe ( gulp . dest ( 'dist' ) ) ;
108+ } ) ;
109+ gulp . watch ( config . assets . app . scripts , [ 'app-scripts' ] ) ;
110+ gulp . watch ( [ config . assets . app . sassStyles , config . assets . app . lessStyles , config . assets . app . styles ] , [ 'app-styles' ] ) ;
111+ gulp . watch ( config . assets . app . templates , [ 'app-templates' ] ) ;
112+ gulp . watch ( config . assets . app . languages , [ 'app-languages' ] ) ;
91113} ) ;
92114
93115//Gulp default task
94- gulp . task ( 'default' , [ 'build-inject' , 'server' , 'rebuild' ] ) ;
116+ gulp . task ( 'default' , [ 'build' , 'serve' ] ) ;
117+
95118
119+ //ALL TASK TO EXECUTE UNIT / End2End Tests
96120
121+ //Unit testing using karma
122+ gulp . task ( 'unit-tests' , function ( done ) {
123+
124+ new Server ( {
125+ configFile : 'karma.conf.js' ,
126+ singleRun : true
127+ } , done ) . start ( ) ;
128+ } ) ;
129+
130+ //E2E testing using protractor
131+ gulp . task ( 'e2e-tests' , function ( ) {
132+
133+ gulp . src ( [ 'tests/e2e/**/*.js' ] ) . pipe ( protractor ( {
134+ configFile : "protractor.conf.js" ,
135+ args : [ '--baseUrl' , 'http://127.0.0.1:8000' ]
136+ } )
137+ ) . on ( 'error' , function ( e ) {
138+ throw e
139+ } ) ;
140+ } ) ;
0 commit comments