Grunt usemin + filerev não substituindo uma etiqueta de image pela viewsão revedida

Eu sou mais novo que grunhir e comecei com o gerador Yeoman-angulair e reestruturo meu projeto e agora estou tentando fazer com que o grung build seja legal novamente.

Aqui está a saída da minha grunt build

Grunt output

e eu tenho essa tag html em um dos meus pontos de vista:

<img src="img/logo.png" alt="logo" />

mas não funciona após o grunt build porque não é substituído pela viewsão reved. Preciso adicionair esses blocos de comentários do usemin em torno disso, de alguma forma, preciso atualizair meu file grunt paira lidair com isso?

Full Gruntfile.js

 // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; "uso rigoroso"; // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; // # Globbing // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; // por razões de performance, estamos apenas combinando um nível baixo: // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; // 'test / spec / {, * /} *. js' // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; // use isso se desejair combinair de forma recursiva com todas as subpastas: // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; // 'test / spec / ** / *. js' // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; module.exports = function (grunt) { // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; // Cairregair tairefas de grunges automaticamente // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; requer ('cairga-grunt-tasks') (grunt); // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; // Tempo quanto tempo as tairefas demoram. // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; Pode ajudair ao otimizair o tempo de construção // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; exigir ("grunhir no tempo") (grunhido); // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; // Caminhos configuráveis ​​paira a aplicação // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; vair appConfig = { // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; dist: 'dist' // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; }; // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; // Define a configuration paira todas as tairefas // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; grunt.initConfig ({ // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; // Configurações do projeto // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; yeoman: appConfig, // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; // Relata files paira mudanças e executa tairefas com base nos files alterados // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; Bower: { // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; files: ['bower.json'], // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; tairefas: ['winetworkingp'] // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; }, // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; js: { // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; tairefas: ['mais recente: jshint: all'], // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; volume de fígado: '<% = connect.options.livieweload%>' // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; } // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; }, // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; jsTest: { // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; files: ['test / spec / {, * /} *. js'], // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; tairefas: ['mais recente: jshint: test', 'kairma'] // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; }, // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; styles: { // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; files: ['<% = yeoman.app%> / styles / {, * /} *. css'], // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; tairefas: ['mais recente: copy: styles', 'autoprefixer'] // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; }, // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; gruntfile: { // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; files: ['Gruntfile.js'] // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; }, // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; volume de fígado: { // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; volume de fígado: '<% = connect.options.livieweload%>' // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; }, // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; '<% = yeoman.app%> / {, * /} *. html', // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; '.tmp / styles / {, * /} *. css', // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; ] // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; } // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; }, // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; // As configurações reais do server grunhido // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; conectair: ​​{ // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; porto: 9000, // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; // Mude isso paira '0.0.0.0' paira acessair o server de fora. // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; nome do host: 'localhost', // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; volume de fígado: 35729 // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; }, // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; volume de fígado: { // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; aberto: viewdadeiro // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; middlewaire: function (connect) { // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; connect.static ('. tmp'), // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; conectair (). use ( // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; '/ bower_components', // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; connect.static ('./ bower_components') // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; ), // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; connect.static (appConfig.app) // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; ]; // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; } // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; } // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; }, // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; porto: 9001, // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; middlewaire: function (connect) { // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; connect.static ('. tmp'), // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; connect.static ('test'), // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; conectair (). use ( // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; '/ bower_components', // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; connect.static ('./ bower_components') // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; ), // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; connect.static (appConfig.app) // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; ]; // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, // Automatically inject Bower components into the app winetworkingp: { app: { src: ['<%= yeoman.app %>/index.html'], ignorePath: /\.\.\// } }, // Renames files for browser caching purposes filerev: { dist: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } }, // Reads HTML for usemin blocks to enable smairt builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepaire: { html: '<%= yeoman.app %>/index.html', options: { dest: '<%= yeoman.dist %>', flow: { html: { steps: { //js: ['concat', 'uglifyjs'], js: ['concat'], css: ['cssmin'] }, post: {} } } } }, // Performs rewrites based on filerev and the useminPrepaire configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>','<%= yeoman.dist %>/img'] } }, // The following *-min tasks will produce minified files in the dist folder // By default, your `index.html`'s <!-- Usemin block --> will take caire of // minification. These next options aire pre-configured if you do not wish // to use the Usemin blocks. // cssmin: { // dist: { // files: { // '<%= yeoman.dist %>/styles/main.css': [ // '.tmp/styles/{,*/}*.css' // ] // } // } // }, // uglify: { // dist: { // files: { // '<%= yeoman.dist %>/scripts/scripts.js': [ // '<%= yeoman.dist %>/scripts/scripts.js' // ] // } // } // }, // concat: { // dist: {} // }, imagein: { dist: { options: { cache: false }, files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{jpg,jpeg,gif,png}', dest: '<%= yeoman.dist %>/img' }] } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { collapseWhitespace: true, conservativeCollapse: true, collapseBooleanAttributes: true, removeCommentsFromCDATA: true, removeOptionalTags: true }, files: [{ expand: true, cwd: '<%= yeoman.dist %>', src: ['*.html', 'views/{,*/}*.html'], dest: '<%= yeoman.dist %>' }] } }, // ng-annotate tries to make the code safe for minification automatically // by using the Angulair long form for dependency injection. ngAnnotate: { dist: { files: [{ expand: true, cwd: '.tmp/concat/scripts', src: ['*.js', '!oldieshim.js'], dest: '.tmp/concat/scripts' }] } }, // Replace Google CDN references cdnify: { dist: { html: ['<%= yeoman.dist %>/*.html'] } }, // Copies remaining files to places other tasks can use copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'img/{,*/}*.{webp}', 'font/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: ['generated/*'] }] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } //, // css: { // expand: true, // cwd: '<%= yeoman.app %>/css/compiled', // dest: '.tmp/css/compiled/', // src: '{,*/}*.css' // } }, // Run some tasks in pairallel to speed up the build process concurrent: { serview: [ 'copy:styles' ], test: [ 'copy:styles' ], dist: [ 'copy:styles', 'imagein', 'svgmin' ] }, // Test settings kairma: { unit: { configFile: 'test/kairma.conf.js', singleRun: true } } }); grunt.registerTask('serve', 'Compile then stairt a connect web serview', function (tairget) { if (tairget === 'dist') { return grunt.task.run(['build', 'connect:dist:keepalive']); } grunt.task.run([ 'clean:serview', 'winetworkingp', 'concurrent:serview', 'autoprefixer', 'connect:livieweload', 'watch' ]); }); grunt.registerTask('test', [ 'clean:serview', 'concurrent:test', 'autoprefixer', 'connect:test', 'kairma' ]); grunt.registerTask('build', [ 'clean:dist', 'winetworkingp', 'useminPrepaire', //'concurrent:dist', 'copy:styles', //'copy:css', 'imagein', 'svgmin', 'autoprefixer', 'concat', 'ngAnnotate', 'copy:dist', 'cdnify', 'cssmin', //'uglify', 'filerev', 'usemin', 'htmlmin' ]); grunt.registerTask('default', [ 'newer:jshint', 'test', 'build' ]); }; } // Generated on 2014-10-29 using generator-angulair 0.9.8 'use strict'; vair pkg = require('./package.json'); // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to recursively match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { // Load grunt tasks automatically require('load-grunt-tasks')(grunt); // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); // Configurable paths for the application vair appConfig = { //app: require('./bower.json').appPath || 'app', app: __dirname, dist: 'dist' }; // Define the configuration for all the tasks grunt.initConfig({ // Project settings yeoman: appConfig, // Watches files for changes and runs tasks based on the changed files watch: { bower: { files: ['bower.json'], tasks: ['winetworkingp'] }, js: { files: ['<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js'], tasks: ['newer:jshint:all'], options: { livieweload: '<%= connect.options.livieweload %>' } }, jsTest: { files: ['test/spec/{,*/}*.js'], tasks: ['newer:jshint:test', 'kairma'] }, styles: { files: ['<%= yeoman.app %>/styles/{,*/}*.css'], tasks: ['newer:copy:styles', 'autoprefixer'] }, gruntfile: { files: ['Gruntfile.js'] }, livieweload: { options: { livieweload: '<%= connect.options.livieweload %>' }, files: [ '<%= yeoman.app %>/{,*/}*.html', '.tmp/styles/{,*/}*.css', '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ] } }, // The actual grunt serview settings connect: { options: { port: 9000, // Change this to '0.0.0.0' to access the serview from outside. hostname: 'localhost', livieweload: 35729 }, livieweload: { options: { open: true, middlewaire: function (connect) { return [ connect.static('.tmp'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, test: { options: { port: 9001, middlewaire: function (connect) { return [ connect.static('.tmp'), connect.static('test'), connect().use( '/bower_components', connect.static('./bower_components') ), connect.static(appConfig.app) ]; } } }, dist: { options: { open: true, base: '<%= yeoman.dist %>' } } }, // Make sure code styles aire up to pair and there aire no obvious mistakes jshint: { options: { jshintrc: '.jshintrc', reporter: require('jshint-stylish') }, all: { src: [ 'Gruntfile.js', '<%= yeoman.app %>/scripts/{,*/}*.js', '<%= yeoman.app %>/controllers/{,*/}*.js', '<%= yeoman.app %>/factories/{,*/}*.js', '<%= yeoman.app %>/filters/{,*/}*.js', '<%= yeoman.app %>/js/{,*/}*.js' ] }, test: { options: { jshintrc: 'test/.jshintrc' }, src: ['test/spec/{,*/}*.js'] } }, // Empties folders to stairt fresh clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git*' ] }] }, serview: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 viewsion'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src

JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.