@@ -6,16 +6,16 @@ module.exports = function (grunt) {
66 require ( 'load-grunt-tasks' ) ( grunt ) ;
77 var _ = require ( 'lodash' ) ;
88
9- var karmaConfig = function ( configFile , customOptions ) {
10- var options = { configFile : configFile , keepalive : true } ;
11- var travisOptions = process . env . TRAVIS && { browsers : [ 'Firefox' ] , reporters : 'dots' } ;
9+ var karmaConfig = function ( configFile , customOptions ) {
10+ var options = { configFile : configFile , keepalive : true } ;
11+ var travisOptions = process . env . TRAVIS && { browsers : [ 'Firefox' ] , reporters : 'dots' } ;
1212 return _ . extend ( options , customOptions , travisOptions ) ;
1313 } ;
1414
1515 // Returns configuration for bower-install plugin
1616 var loadTestScopeConfigurations = function ( ) {
1717 var scopes = fs . readdirSync ( './test_scopes' ) . filter ( function ( filename ) {
18- return filename [ 0 ] !== '.' ;
18+ return typeof filename === 'string' && filename [ 0 ] !== '.' ;
1919 } ) ;
2020 var config = {
2121 options : {
@@ -25,149 +25,175 @@ module.exports = function (grunt) {
2525 } ;
2626 // Create a sub config for each test scope
2727 for ( var idx in scopes ) {
28- var scope = scopes [ idx ] ;
29- config [ 'test_scopes_' + scope ] = {
30- options : {
31- cwd : 'test_scopes/' + scope ,
32- production : false
33- }
34- } ;
28+ if ( scopes . hasOwnProperty ( idx ) ) {
29+ var scope = scopes [ idx ] ;
30+ config [ 'test_scopes_' + scope ] = {
31+ options : {
32+ cwd : 'test_scopes/' + scope ,
33+ production : false
34+ }
35+ } ;
36+ }
3537 }
36- return config ;
38+ return config ;
3739 } ;
3840
3941 grunt . initConfig ( {
40- pkg : grunt . file . readJSON ( 'bower .json' ) ,
41- meta : {
42- banner : '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
43- '<%= grunt.template.today("yyyy-mm-dd") %>\n' +
44- '<%= pkg.homepage ? "* " + pkg.homepage + "\n" : "" %>' +
45- '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
46- ' Licensed <%= _.pluck(pkg.licenses, "type ").join(", ") %> */'
42+ pkg : grunt . file . readJSON ( 'package .json' ) ,
43+ meta : {
44+ banner : '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
45+ '<%= grunt.template.today("yyyy-mm-dd") %>\n' +
46+ '<%= pkg.homepage ? "* " + pkg.homepage + "\ \n" : "" %>' +
47+ '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
48+ ' Licensed <%= _.pluck(pkg.licenses, "name ").join(", ") %> */'
4749 } ,
48- clean : {
49- dist : 'dist/' ,
50- temp : 'temp/'
50+ clean : {
51+ dist : 'dist/' ,
52+ temp : 'temp/'
5153 } ,
52- watch : {
53- 'coffee-src' : {
54- files : [ 'src/**/*.coffee' ] ,
55- tasks : [ 'coffee:src' ]
56- } ,
57- 'coffee-test' : {
58- files : [ 'test/**/*.coffee' ] ,
59- tasks : [ 'coffee:test' ]
60- } ,
61- scripts : {
62- files : [ 'Gruntfile.js' , 'temp/**/*.js' , 'test/**/*.js' ] ,
63- tasks : [ 'jshint' , 'karma:unit' ]
64- }
65- } ,
66- jshint : {
67- all : [ 'Gruntfile.js' , 'src/**/*.js' , 'test/unit/*.js' ] ,
68- options : {
69- eqeqeq : true ,
70- globals : {
71- angular : true
54+ jshint : {
55+ all : [ 'Gruntfile.js' , 'test/unit/*.js' , 'src/**/*.js' ] ,
56+ options : {
57+ esnext : true ,
58+ eqeqeq : true ,
59+ globals : {
60+ angular : true
7261 }
7362 }
7463 } ,
75- coffee : {
76- src : {
77- options : {
78- join : true
64+ coffee : {
65+ test : {
66+ options : {
67+ bare : true
7968 } ,
80- files : {
81- 'temp/src/angular-vertxbus-adapter.js' : [
82- 'src/module.coffee' , 'src/wrapper.coffee' , 'src/service.coffee'
83- ]
84- }
69+ expand : true ,
70+ cwd : 'test/' ,
71+ src : [ 'unit/**/*.coffee' ] ,
72+ dest : 'temp/test/' ,
73+ ext : '.js'
74+ }
75+ } ,
76+ babel : {
77+ options : {
78+ sourceMap : false
8579 } ,
86- test : {
87- options : {
88- bare : true
89- } ,
90- expand : true ,
91- cwd : 'test/' ,
92- src : [ 'unit/**/*.coffee' ] ,
93- dest : 'temp/test/' ,
94- ext : '.js'
80+ src : {
81+ expand : true ,
82+ cwd : 'src/' ,
83+ src : [ '**/*.js' ] ,
84+ dest : 'temp/' ,
85+ ext : '.js'
9586 }
9687 } ,
97- concat : {
98- src : {
99- options : {
100- banner : '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
101- '<%= grunt.template.today("yyyy-mm-dd") %>\n' +
102- '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
103- '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
104- ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n'
105- } ,
106- src : [ 'temp/src/**/*.js' ] ,
107- dest : 'dist/angular-vertxbus.js'
88+ karma : {
89+ unit : {
90+ options : karmaConfig ( 'karma.conf.js' , {
91+ singleRun : true
92+ } )
10893 } ,
109- lib : {
94+ headless : {
95+ options : karmaConfig ( 'karma.conf.js' , {
96+ singleRun : true ,
97+ browsers : [ 'PhantomJS' ]
98+ } )
99+ } ,
100+ server : {
101+ options : karmaConfig ( 'karma.conf.js' , {
102+ singleRun : false
103+ } )
104+ }
105+ } ,
106+ watch : {
107+ 'test' : {
108+ files : [ 'test/**/*.coffee' ] ,
109+ tasks : [ 'coffee:test' ]
110+ } ,
111+ scripts : {
112+ files : [ 'Gruntfile.js' , 'temp/**/*.js' , 'test/**/*.js' ] ,
113+ tasks : [ 'karma:unit' ]
114+ }
115+ } ,
116+ browserify : {
117+ dist : {
110118 options : {
111- banner : '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
112- '<%= grunt.template.today("yyyy-mm-dd") %>\n' +
113- '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
114- '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
115- ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n'
119+ browserifyOptions : {
120+ fullPaths : false ,
121+ debug : true
122+ } ,
123+ transform : [ 'babelify' , require ( 'browserify-ngannotate' ) ] ,
124+ banner : '<%= meta.banner %>' ,
125+ watch : true
116126 } ,
117- src : [
118- 'build-data-for-requirejs/angular-vertxbus_start.txt' ,
119- 'temp/src/**/*.js' ,
120- 'build-data-for-requirejs/angular-vertxbus_end.txt'
121- ] ,
122- dest : 'dist/requirejs/angular-vertxbus.js'
127+ files : {
128+ 'dist/angular-vertxbus.js' : [
129+ 'src/index.js'
130+ ]
131+ }
123132 }
124133 } ,
125- uglify : {
126- src : {
134+ extract_sourcemap : {
135+ dist : {
127136 files : {
128- 'dist/angular-vertxbus.min. js' : '<%= concat.src.dest %>'
137+ 'dist' : [ 'dist /angular-vertxbus.js']
129138 }
130139 }
131140 } ,
132- karma : {
133- unit : {
134- options : karmaConfig ( 'karma.conf.js' , {
135- singleRun : true
136- } )
141+ uglify : {
142+ options : {
143+ preserveComments : 'some' ,
144+ sourceMap : true ,
145+ sourceMapIn : 'dist/angular-vertxbus.js.map'
137146 } ,
138- server : {
139- options : karmaConfig ( 'karma.conf.js' , {
140- singleRun : false
141- } )
142- }
143- } ,
144- changelog : {
145- options : {
146- dest : 'CHANGELOG.md'
147+ dist : {
148+ files : {
149+ 'dist/angular-vertxbus.min.js' : 'dist/angular-vertxbus.js'
150+ }
147151 }
148152 } ,
149- ngAnnotate : {
150- options : {
151- singleQuotes : true
152- } ,
153- src : {
154- src : '<%= concat.src.dest %>' ,
155- dest : '<%= concat.src.dest %>'
156- } ,
157- lib : {
158- src : '<%= concat.lib.dest %>' ,
159- dest : '<%= concat.lib.dest %>'
153+ changelog : {
154+ options : {
155+ dest : 'CHANGELOG.md'
160156 }
161157 } ,
162158
163- 'bower-install-simple' : loadTestScopeConfigurations ( )
159+ 'bower-install-simple' : loadTestScopeConfigurations ( )
164160
165161 } ) ;
166162
167- grunt . registerTask ( 'default' , [ 'clean:temp' , 'coffee' , 'jshint' , 'karma:unit' ] ) ;
168- grunt . registerTask ( 'test' , [ 'coffee' , 'jshint' , 'karma:unit' ] ) ;
169- grunt . registerTask ( 'install-test' , [ 'bower-install-simple' ] ) ;
170- grunt . registerTask ( 'test-server' , [ 'karma:server' ] ) ;
171- grunt . registerTask ( 'build' , [ 'clean' , 'coffee' , 'jshint' , 'karma:unit' , 'concat' , 'ngAnnotate' , 'uglify' ] ) ;
172- grunt . registerTask ( 'release' , [ 'changelog' , 'build' ] ) ;
163+ // Compile and test (use "build" for dist/*)
164+ grunt . registerTask ( 'default' , [
165+ 'clean' ,
166+ 'coffee' ,
167+ 'jshint' ,
168+ 'karma:unit'
169+ ] ) ;
170+
171+ // Testing
172+ grunt . registerTask ( 'test' , [
173+ 'clean' ,
174+ 'coffee' ,
175+ 'jshint' ,
176+ 'karma:unit'
177+ ] ) ;
178+ grunt . registerTask ( 'install-test' , [
179+ 'bower-install-simple'
180+ ] ) ;
181+ grunt . registerTask ( 'test-server' , [
182+ 'karma:server'
183+ ] ) ;
184+
185+ // Building & releasing
186+ grunt . registerTask ( 'build' , [
187+ 'clean' ,
188+ 'coffee' ,
189+ 'jshint' ,
190+ 'karma:unit' ,
191+ 'browserify' ,
192+ 'extract_sourcemap' ,
193+ 'uglify'
194+ ] ) ;
195+ grunt . registerTask ( 'release' , [
196+ 'changelog' ,
197+ 'build'
198+ ] ) ;
173199} ;
0 commit comments