json - Error after running 'grunt' -


after running grunt error. no idea means.

done, without errors. warning: running "imagemin:dist" (imagemin) task warning: cannot call method 'replace' of undefined use --force continue. 

i haven't touched gruntfile.js, should work out of box right? help? thanks.

----------------- gruntfile.js generated yeoman/generator-webapp --------------------

// generated on 2014-06-26 using generator-webapp 0.4.9 'use strict';  // # globbing // performance reasons we're matching 1 level down: // 'test/spec/{,*/}*.js' // use if want recursively match subfolders: // 'test/spec/**/*.js'  module.exports = function (grunt) {      // load grunt tasks automatically     require('load-grunt-tasks')(grunt);      // time how long tasks take. can when optimizing build times     require('time-grunt')(grunt);      // configurable paths     var config = {         app: 'app',         dist: 'dist'     };      // define configuration tasks     grunt.initconfig({          // project settings         config: config,          // watches files changes , runs tasks based on changed files         watch: {             bower: {                 files: ['bower.json'],                 tasks: ['bowerinstall']             },             js: {                 files: ['<%= config.app %>/scripts/{,*/}*.js'],                 tasks: ['jshint'],                 options: {                     livereload: true                 }             },             jstest: {                 files: ['test/spec/{,*/}*.js'],                 tasks: ['test:watch']             },             gruntfile: {                 files: ['gruntfile.js']             },             sass: {                 files: ['<%= config.app %>/styles/{,*/}*.{scss,sass}'],                 tasks: ['sass:server', 'autoprefixer']             },             styles: {                 files: ['<%= config.app %>/styles/{,*/}*.css'],                 tasks: ['newer:copy:styles', 'autoprefixer']             },             livereload: {                 options: {                     livereload: '<%= connect.options.livereload %>'                 },                 files: [                     '<%= config.app %>/{,*/}*.html',                     '.tmp/styles/{,*/}*.css',                     '<%= config.app %>/images/{,*/}*'                 ]             }         },          // actual grunt server settings         connect: {             options: {                 port: 9000,                 open: true,                 livereload: 35729,                 // change '0.0.0.0' access server outside                 hostname: 'localhost'             },             livereload: {                 options: {                     middleware: function(connect) {                         return [                             connect.static('.tmp'),                             connect().use('/bower_components', connect.static('./bower_components')),                             connect.static(config.app)                         ];                     }                 }             },             test: {                 options: {                     open: false,                     port: 9001,                     middleware: function(connect) {                         return [                             connect.static('.tmp'),                             connect.static('test'),                             connect().use('/bower_components', connect.static('./bower_components')),                             connect.static(config.app)                         ];                     }                 }             },             dist: {                 options: {                     base: '<%= config.dist %>',                     livereload: false                 }             }         },          // empties folders start fresh         clean: {             dist: {                 files: [{                     dot: true,                     src: [                         '.tmp',                         '<%= config.dist %>/*',                         '!<%= config.dist %>/.git*'                     ]                 }]             },             server: '.tmp'         },          // make sure code styles par , there no obvious mistakes         jshint: {             options: {                 jshintrc: '.jshintrc',                 reporter: require('jshint-stylish')             },             all: [                 'gruntfile.js',                 '<%= config.app %>/scripts/{,*/}*.js',                 '!<%= config.app %>/scripts/vendor/*',                 'test/spec/{,*/}*.js'             ]         },          // mocha testing framework configuration options         mocha: {             all: {                 options: {                     run: true,                     urls: ['http://<%= connect.test.options.hostname %>:<%= connect.test.options.port %>/index.html']                 }             }         },          // compiles sass css , generates necessary files if requested         sass: {             options: {                 includepaths: [                     'bower_components'                 ]             },             dist: {                 files: [{                     expand: true,                     cwd: '<%= config.app %>/styles',                     src: ['*.scss'],                     dest: '.tmp/styles',                     ext: '.css'                 }]             },             server: {                 files: [{                     expand: true,                     cwd: '<%= config.app %>/styles',                     src: ['*.scss'],                     dest: '.tmp/styles',                     ext: '.css'                 }]             }         },          // add vendor prefixed styles         autoprefixer: {             options: {                 browsers: ['last 1 version']             },             dist: {                 files: [{                     expand: true,                     cwd: '.tmp/styles/',                     src: '{,*/}*.css',                     dest: '.tmp/styles/'                 }]             }         },          // automatically inject bower components html file         bowerinstall: {             app: {                 src: ['<%= config.app %>/index.html'],                 exclude: ['bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap.js']             },             sass: {                 src: ['<%= config.app %>/styles/{,*/}*.{scss,sass}']             }         },          // renames files browser caching purposes         rev: {             dist: {                 files: {                     src: [                         '<%= config.dist %>/scripts/{,*/}*.js',                         '<%= config.dist %>/styles/{,*/}*.css',                         '<%= config.dist %>/images/{,*/}*.*',                         '<%= config.dist %>/styles/fonts/{,*/}*.*',                         '<%= config.dist %>/*.{ico,png}'                     ]                 }             }         },          // reads html usemin blocks enable smart builds automatically         // concat, minify , revision files. creates configurations in memory         // additional tasks can operate on them         useminprepare: {             options: {                 dest: '<%= config.dist %>'             },             html: '<%= config.app %>/index.html'         },          // performs rewrites based on rev , useminprepare configuration         usemin: {             options: {                 assetsdirs: ['<%= config.dist %>', '<%= config.dist %>/images']             },             html: ['<%= config.dist %>/{,*/}*.html'],             css: ['<%= config.dist %>/styles/{,*/}*.css']         },          // following *-min tasks produce minified files in dist folder         imagemin: {             dist: {                 files: [{                     expand: true,                     cwd: '<%= config.app %>/images',                     src: '{,*/}*.{gif,jpeg,jpg,png}',                     dest: '<%= config.dist %>/images'                 }]             }         },          svgmin: {             dist: {                 files: [{                     expand: true,                     cwd: '<%= config.app %>/images',                     src: '{,*/}*.svg',                     dest: '<%= config.dist %>/images'                 }]             }         },          htmlmin: {             dist: {                 options: {                     collapsebooleanattributes: true,                     collapsewhitespace: true,                     removeattributequotes: true,                     removecommentsfromcdata: true,                     removeemptyattributes: true,                     removeoptionaltags: true,                     removeredundantattributes: true,                     useshortdoctype: true                 },                 files: [{                     expand: true,                     cwd: '<%= config.dist %>',                     src: '{,*/}*.html',                     dest: '<%= config.dist %>'                 }]             }         },          // default, `index.html`'s <!-- usemin block --> take care of         // minification. these next options pre-configured if not wish         // use usemin blocks.         // cssmin: {         //     dist: {         //         files: {         //             '<%= config.dist %>/styles/main.css': [         //                 '.tmp/styles/{,*/}*.css',         //                 '<%= config.app %>/styles/{,*/}*.css'         //             ]         //         }         //     }         // },         // uglify: {         //     dist: {         //         files: {         //             '<%= config.dist %>/scripts/scripts.js': [         //                 '<%= config.dist %>/scripts/scripts.js'         //             ]         //         }         //     }         // },         // concat: {         //     dist: {}         // },          // copies remaining files places other tasks can use         copy: {             dist: {                 files: [{                     expand: true,                     dot: true,                     cwd: '<%= config.app %>',                     dest: '<%= config.dist %>',                     src: [                         '*.{ico,png,txt}',                         '.htaccess',                         'images/{,*/}*.webp',                         '{,*/}*.html',                         'styles/fonts/{,*/}*.*'                     ]                 }, {                     expand: true,                     dot: true,                     cwd: '.',                     src: ['bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/*.*'],                     dest: '<%= config.dist %>'                 }]             },             styles: {                 expand: true,                 dot: true,                 cwd: '<%= config.app %>/styles',                 dest: '.tmp/styles/',                 src: '{,*/}*.css'             }         },          // run tasks in parallel speed build process         concurrent: {             server: [                 'sass:server',                 'copy:styles'             ],             test: [                 'copy:styles'             ],             dist: [                 'sass',                 'copy:styles',                 'imagemin',                 'svgmin'             ]         }     });       grunt.registertask('serve', function (target) {         if (target === 'dist') {             return grunt.task.run(['build', 'connect:dist:keepalive']);         }          grunt.task.run([             'clean:server',             'concurrent:server',             'autoprefixer',             'connect:livereload',             'watch'         ]);     });      grunt.registertask('server', function (target) {         grunt.log.warn('the `server` task has been deprecated. use `grunt serve` start server.');         grunt.task.run([target ? ('serve:' + target) : 'serve']);     });      grunt.registertask('test', function (target) {         if (target !== 'watch') {             grunt.task.run([                 'clean:server',                 'concurrent:test',                 'autoprefixer'             ]);         }          grunt.task.run([             'connect:test',             'mocha'         ]);     });      grunt.registertask('build', [         'clean:dist',         'useminprepare',         'concurrent:dist',         'autoprefixer',         'concat',         'cssmin',         'uglify',         'copy:dist',         'rev',         'usemin',         'htmlmin'     ]);      grunt.registertask('default', [         'newer:jshint',         'test',         'build'     ]); }; 

--------------------------- grunt -vd ---------------------------- https://gist.github.com/labanino/4a470f5d4ef440017a32

fix: ran npm cache clean , npm install grunt-contrib-imagemin , voilĂ .


Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

Python ctypes access violation with const pointer arguments -