| /* |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| */ |
| var bower = require('./bower.json'); |
| |
| var distPath = 'dist/'+bower.name, |
| coveragePath = 'dist-cov/'+bower.name, |
| libsFile = 'js/generated/usergrid-libs.min.js', |
| devFile = 'js/generated/usergrid-dev.js', |
| mainFile = 'js/generated/usergrid.min.js', |
| templateFile = 'js/generated-templates/templates.js', |
| coverageDir = 'test/coverage/instrument/', |
| coverageFile = 'test/coverage/instrument/js/usergrid-coverage.min.js', |
| |
| distName = bower.name, |
| licenseHeader =' /**\n \ |
| Licensed to the Apache Software Foundation (ASF) under one\n \ |
| or more contributor license agreements. See the NOTICE file\n \ |
| distributed with this work for additional information \n \ |
| regarding copyright ownership. The ASF licenses this file \n\ |
| to you under the Apache License, Version 2.0 (the \n \ |
| "License"); you may not use this file except in compliance \n \ |
| with the License. You may obtain a copy of the License at \n \ |
| \n \ |
| http://www.apache.org/licenses/LICENSE-2.0 \n \ |
| \n \ |
| Unless required by applicable law or agreed to in writing,\n \ |
| software distributed under the License is distributed on an\n \ |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n \ |
| KIND, either express or implied. See the License for the\n \ |
| specific language governing permissions and limitations\n \ |
| under the License.\n \ |
| */\n'; |
| console.warn('to run e2e tests you need to have a running instance of webdriver, 1) npm install protractor -g -> 2) webdriver-manager start --standalone'); |
| module.exports = function (grunt) { |
| |
| |
| // Project configuration. |
| grunt.initConfig({ |
| pkg: grunt.file.readJSON('package.json'), |
| |
| uglify: { |
| options: { |
| banner: licenseHeader + '\n /*! <%= pkg.name %>@<%= pkg.version %> */\n' |
| }, |
| 'usergrid-libs':{ |
| options: { |
| mangle: false, |
| compress: {warnings:false}, |
| beautify: false |
| }, |
| files:{ |
| 'js/generated/usergrid-libs.min.js':[ |
| 'js/libs/jquery/jquery-1.9.1.min.js', |
| 'js/libs/jquery/jquery-migrate-1.1.1.min.js', |
| 'js/libs/jquery/jquery.sparkline.min.js', |
| 'js/libs/Highcharts-2.3.5/js/highcharts.js', |
| 'js/libs/angular-1.2.5/angular.min.js', |
| 'js/libs/angular-1.2.5/angular-route.min.js', |
| 'js/libs/angular-1.2.5/angular-resource.min.js', |
| 'js/libs/angular-1.2.5/angular-sanitize.min.js', |
| 'js/libs/usergrid.sdk.js', |
| 'js/libs/MD5.min.js', |
| 'js/libs/ui-bootstrap/ui-bootstrap-custom-tpls-0.3.0.min.js', |
| 'js/libs/jqueryui/jquery-ui-1.8.18.min.js', |
| 'js/libs/jqueryui/date.min.js', |
| 'bower_components/intro.js/minified/intro.min.js', |
| 'bower_components/angular-intro.js/src/angular-intro.js', |
| ] |
| } |
| }, |
| 'usergrid-dev': { |
| options: { |
| mangle: false, |
| compress: false, |
| beautify: true, |
| wrap: true |
| }, |
| files: { |
| 'js/generated/usergrid-dev.js': [ |
| 'js/app.js', |
| 'js/**/*.js', |
| '!js/config.js', |
| '!js/libs/**/*.js', |
| '!js/generated/*.js' |
| ] |
| } |
| }, |
| 'usergrid-coverage': { |
| options: { |
| mangle: false, |
| compress: false, |
| beautify: false, |
| wrap: false |
| }, |
| files: { |
| 'test/coverage/instrument/js/usergrid-coverage.min.js': [ |
| coverageDir+'js/app.js', |
| coverageDir+'js/**/*.js', |
| 'js/generated-templates/templates.js', |
| '!'+coverageDir+'js/config.js', |
| '!'+coverageDir+'js/libs/**/*.js', |
| '!'+coverageDir+'js/generated/*.js', |
| '!'+coverageDir+'js/usergrid-coverage.min.js' |
| ] |
| } |
| }, |
| 'usergrid-coverage-min': { |
| options: { |
| mangle: false, |
| compress: {warnings:false}, |
| beautify: false |
| }, |
| files: { |
| 'test/coverage/instrument/js/usergrid.min.js': [ |
| coverageFile |
| ] |
| } |
| }, |
| 'usergrid': { |
| options: { |
| mangle: false, |
| compress: {warnings:false}, |
| beautify: false |
| }, |
| files: { |
| 'js/generated/usergrid.min.js': [ |
| devFile |
| ] |
| } |
| } |
| |
| }, |
| ngtemplates: { |
| "appservices": { |
| options: { |
| base: 'js/' |
| }, |
| src: ['js/**/*.html','!**/index*'], |
| dest: templateFile, |
| options: { |
| url: function(url) { return url.replace('js/', ''); } |
| } |
| } |
| }, |
| |
| cssmin: { |
| combine: { |
| files: { |
| 'css/main.min.css': ['css/main.css'] |
| } |
| } |
| }, |
| watch: { |
| options: { |
| livereload: true |
| }, |
| files: [ |
| 'index-template.html', |
| 'css/**/*.css', |
| 'js/**/*.js', |
| 'js/**/*.html', |
| '!tests/', |
| '!css/main.min.css', |
| '!js/libs/', |
| '!js/generated/*.js', |
| '!js/generated-templates/*.js' |
| ], |
| tasks: ['build-dev'] |
| }, |
| connect: { |
| server: { |
| options: { |
| target: 'http://localhost:3000/index-debug.html', // target url to open |
| open: 'http://localhost:3000/index-debug.html', |
| hostname:'*', |
| livereload:true, |
| port: 3000, |
| base: '' |
| } |
| }, |
| 'e2e-coverage-chrome': { |
| options: { |
| port: 3006, |
| base: coveragePath |
| } |
| }, |
| 'e2e-phantom': { |
| options: { |
| port: 3005, |
| base: distPath |
| } |
| }, |
| 'e2e-chrome': { |
| options: { |
| port: 3006, |
| base: distPath |
| } |
| }, |
| 'e2e-firefox': { |
| options: { |
| port: 3007, |
| base: distPath |
| } |
| } |
| }, |
| karma: { |
| unit: { |
| configFile: 'tests/karma.conf.js', |
| runnerPort: 9999, |
| singleRun: true, |
| browsers: ['PhantomJS'] |
| }, |
| coverage: { |
| configFile: 'tests/karma-coverage.conf.js', |
| runnerPort: 9999, |
| singleRun: true, |
| browsers: ['PhantomJS'] |
| } |
| }, |
| protractor: { |
| options: { |
| configFile: "tests/protractorConf.js", // Default config file |
| keepAlive: true, // If false, the grunt process stops when the test fails. |
| noColor: false, // If true, protractor will not use colors in its output. |
| args: { |
| baseUrl:'http://localhost:3005/' |
| } |
| }, |
| phantom: { |
| options: { |
| args: { |
| baseUrl:'http://localhost:3005/', |
| // Arguments passed to the command |
| 'browser': 'phantomjs' |
| } |
| } |
| }, |
| chrome: { |
| options: { |
| args: { |
| baseUrl:'http://localhost:3006/?noHelp=true', |
| // Arguments passed to the command |
| 'browser': 'chrome' |
| } |
| } |
| }, |
| firefox: { |
| options: { |
| args: { |
| baseUrl:'http://localhost:3007/', |
| // Arguments passed to the command |
| 'browser': 'firefox' |
| } |
| } |
| } |
| }, |
| copy:{ |
| coverage:{ |
| files:[ |
| { |
| src:['js/*.min.js','js/libs/**','sdk/**','js/charts/*.json','css/**','img/**','js/libs/**','config.js','bower_components/**'], |
| dest:coveragePath, |
| expand:true |
| }, |
| { |
| src:['js/*.min.js'], |
| dest:coveragePath, |
| cwd: coverageDir, |
| expand:true |
| } |
| ] |
| }, |
| main:{ |
| files:[ |
| // includes files within path |
| {expand: true, src: ['*.html','config.js', '*.ico', 'helpJson.json'], dest: distPath, filter: 'isFile'}, |
| {expand: true, src: ['sdk/**','css/**','img/**','js/charts/*.json'], dest: distPath}, |
| {expand: true, src: ['js/generated/**','js/libs/**','css/**','img/**','bower_components/**'], dest: distPath} |
| |
| ] |
| } |
| }, |
| clean: { |
| build: ['dist/','dist-cov/','test/','js/generated/','js/*.min.js',templateFile,'index.html','index-debug.html'], |
| coverage: ['reports/'] |
| }, |
| dom_munger: { |
| main: { |
| options: { |
| update: {selector:'#main-script',attribute:'src',value:mainFile} |
| |
| }, |
| src: 'index-template.html', //update the dist/index.html (the src index.html is copied there) |
| dest: 'index.html' //update the dist/index.html (the src index.html is copied there) |
| |
| }, |
| dev: { |
| options: { |
| update: {selector:'#main-script',attribute:'src',value:devFile} |
| }, |
| src: 'index-template.html', //update the dist/index.html (the src index.html is copied there) |
| dest: 'index-debug.html' //update the dist/index.html (the src index.html is copied there) |
| }, |
| coverage: { |
| options: { |
| update: {selector:'#main-script',attribute:'src',value:'js/usergrid-coverage.min.js'} |
| }, |
| src: 'index-template.html', //update the dist/index.html (the src index.html is copied there) |
| dest: coveragePath+'/index.html' //update the dist/index.html (the src index.html is copied there) |
| } |
| }, |
| bower: { |
| install: { |
| options:{ |
| cleanup:false, |
| copy:false |
| } |
| } |
| }, |
| instrument: { |
| files: 'js/**/*.js', |
| options: { |
| lazy: true, |
| basePath: coverageDir |
| } |
| }, |
| makeReport: { |
| src: 'reports/**/*.json', |
| options: { |
| type: 'lcov', |
| dir: 'reports', |
| print: 'detail' |
| } |
| } |
| }); |
| |
| grunt.loadNpmTasks('grunt-contrib-uglify'); |
| grunt.loadNpmTasks('grunt-contrib-cssmin'); |
| grunt.loadNpmTasks('grunt-contrib-copy'); |
| grunt.loadNpmTasks('grunt-contrib-watch'); |
| grunt.loadNpmTasks('grunt-contrib-connect'); |
| grunt.loadNpmTasks('grunt-contrib-clean'); |
| grunt.loadNpmTasks('grunt-angular-templates'); |
| grunt.loadNpmTasks('grunt-bower-task'); |
| grunt.loadNpmTasks('grunt-contrib-connect'); |
| grunt.loadNpmTasks('grunt-protractor-runner'); |
| grunt.loadNpmTasks('grunt-karma'); |
| grunt.loadNpmTasks('grunt-dom-munger'); |
| |
| grunt.loadNpmTasks('grunt-istanbul'); |
| |
| // Default task(s). |
| grunt.registerTask('dev', ['connect:server', 'watch']); |
| |
| grunt.registerTask('validate', ['jshint', 'complexity']); |
| grunt.registerTask('report', ['build', 'coverage']); |
| |
| grunt.registerTask('build', ['clean:build','bower:install','ngtemplates', 'uglify','cssmin','dom_munger','karma:unit','copy']); |
| grunt.registerTask('build-dev', [ 'build']); |
| grunt.registerTask('build-coverage', [ 'ngtemplates','instrument','uglify:usergrid-coverage','uglify:usergrid-coverage-min', 'cssmin','dom_munger', 'copy:coverage']); |
| |
| grunt.registerTask('default', ['build']); |
| |
| grunt.registerTask('e2e', ['connect:e2e-phantom','protractor:phantom']); |
| grunt.registerTask('e2e-chrome', ['connect:e2e-chrome','protractor:chrome']); |
| grunt.registerTask('e2e-coverage', ['clean:coverage', 'connect:e2e-coverage','protractor:coverage']); |
| grunt.registerTask('e2e-coverage-chrome', ['clean:coverage', 'connect:e2e-coverage-chrome','protractor:chrome', 'makeReport']); |
| grunt.registerTask('e2e-firefox', ['connect:e2e-firefox','protractor:firefox']); |
| grunt.registerTask('no-monitoring', ['build','clean:perf','karma:unit']); |
| |
| }; |