@@ -13,18 +13,22 @@ module.exports = function (grunt) {
1313} ) ;
1414require ( 'time-grunt' ) ( grunt ) ;
1515
16+ var webpack = require ( 'webpack' ) ;
1617var pkg = grunt . file . readJSON ( 'package.json' ) ;
18+ var banner = 'js-data-angular\n' +
19+ '@version ' + pkg . version + ' - Homepage <https://www.js-data.io/docs/js-data-angular/>\n' +
20+ '@author Jason Dobry <jason.dobry@gmail.com>\n' +
21+ '@copyright (c) 2014-2015 Jason Dobry \n' +
22+ '@license MIT <https://github.com/js-data/js-data-angular/blob/master/LICENSE>\n' +
23+ '\n' +
24+ '@overview Angular wrapper for js-data.' ;
1725
1826// Project configuration.
1927grunt . initConfig ( {
2028pkg :pkg ,
2129clean :{
2230dist :[ 'dist/' ]
2331} ,
24- jshint :{
25- all :[ 'Gruntfile.js' , 'src/**/*.js' ] ,
26- jshintrc :'.jshintrc'
27- } ,
2832watch :{
2933dist :{
3034files :[ 'src/**/*.js' ] ,
@@ -36,10 +40,10 @@ module.exports = function (grunt) {
3640options :{
3741sourceMap :true ,
3842sourceMapName :'dist/js-data-angular.min.map' ,
39- banner :'/**\n' +
43+ banner :'/*!\n' +
44+ '* js-data-angular\n' +
45+ '* @version <%= pkg.version %> - Homepage <https://www.js-data.io/docs/js-data-angular/>\n' +
4046'* @author Jason Dobry <jason.dobry@gmail.com>\n' +
41- '* @file js-data-angular.min.js\n' +
42- '* @version <%= pkg.version %> - Homepage <https://www.js-data.io/js-data-angular/>\n' +
4347'* @copyright (c) 2014-2015 Jason Dobry <https://github.com/jmdobry/>\n' +
4448'* @license MIT <https://github.com/js-data/js-data-angular/blob/master/LICENSE>\n' +
4549'*\n' +
@@ -80,6 +84,40 @@ module.exports = function (grunt) {
8084options :{
8185coverage_dir :'coverage'
8286}
87+ } ,
88+ webpack :{
89+ dist :{
90+ entry :'./src/index.js' ,
91+ output :{
92+ filename :'./dist/js-data-angular.js' ,
93+ libraryTarget :'umd' ,
94+ library :'jsDataAngularModuleName'
95+ } ,
96+ externals :{
97+ 'js-data' :{
98+ amd :'js-data' ,
99+ commonjs :'js-data' ,
100+ commonjs2 :'js-data' ,
101+ root :'JSData'
102+ } ,
103+ 'angular' :'angular'
104+ } ,
105+ module :{
106+ loaders :[
107+ { test :/ ( s r c ) ( .+ ) \. j s $ / , exclude :/ n o d e _ m o d u l e s / , loader :'babel-loader?blacklist=useStrict' }
108+ ] ,
109+ preLoaders :[
110+ {
111+ test :/ ( s r c ) ( .+ ) \. j s $ | ( t e s t ) ( .+ ) \. j s $ / , // include .js files
112+ exclude :/ n o d e _ m o d u l e s / , // exclude any and all files in the node_modules folder
113+ loader :"jshint-loader?failOnHint=true"
114+ }
115+ ]
116+ } ,
117+ plugins :[
118+ new webpack . BannerPlugin ( banner )
119+ ]
120+ }
83121}
84122} ) ;
85123
@@ -91,28 +129,9 @@ module.exports = function (grunt) {
91129grunt . file . write ( filePath , file ) ;
92130} ) ;
93131
94- grunt . registerTask ( 'banner' , function ( ) {
95- var file = grunt . file . read ( './src/index.js' ) ;
96-
97- var banner = '/**\n' +
98- '* @author Jason Dobry <jason.dobry@gmail.com>\n' +
99- '* @file js-data-angular.js\n' +
100- '* @version ' + pkg . version + ' - Homepage <http://www.js-data.io/docs/js-data-angular/>\n' +
101- '* @copyright (c) 2014-2015 Jason Dobry <https://github.com/jmdobry/>\n' +
102- '* @license MIT <https://github.com/js-data/js-data-angular/blob/master/LICENSE>\n' +
103- '*\n' +
104- '* @overview Angular wrapper for js-data.js.\n' +
105- '*/\n' ;
106-
107- file = banner + file ;
108-
109- grunt . file . write ( './dist/js-data-angular.js' , file ) ;
110- } ) ;
111-
112132grunt . registerTask ( 'build' , [
113133'clean' ,
114- 'jshint' ,
115- 'banner' ,
134+ 'webpack' ,
116135'uglify'
117136] ) ;
118137grunt . registerTask ( 'go' , [ 'build' , 'watch:dist' ] ) ;