2014-11-25 3 views
1

Я использую Grunt для Узел с пакетом пакетов. Например jsHint, JSDoc, Browserify, уродовать ...grunt-newer не будет работать должным образом с Watchify

Я бегу Gruntfile с Watchify и впереди Новые для автоматизации. Все идет нормально.

Gruntfile, который работает суммарно штраф:

module.exports = function(grunt) { 
    grunt.initConfig({ 
     pkg: grunt.file.readJSON('package.json'), 
     jshint: { 
      all: ['my/js/files/*.js'] 
     }, 
     jsdoc : { 
      dist : { 
       src: ['my/js/files/*.js'], 
       options: { 
        destination: 'doc' 
       } 
      } 
     }, 
     browserify: { 
      'public/js/files/script.js': ['my/js/files/*.js'] 
     }, 
     uglify: { 
      my_target: { 
       files: { 
        'public/js/files/script.js': ['public/js/files/script.js'] 
       } 
      } 
     }, 
     htmlmin: { 
      dist: { 
       files: { 
        'public/html/index.html': ['public/html/index.html'] 
       } 
      } 
     }, 
     cssmin: { 
      combine: { 
       files: { 
        'public/css/css.min.css': ['my/css/files/*.css'] 
       } 
      } 
     }, 
     watch: { 
      javascript: { 
       files: ['my/js/files/*.js'], 
       tasks: ['newer:jshint:all', 'jsdoc', 'browserify', 'uglify'] 
      }, 
      html: { 
       files: ['public/html/index.html'], 
       tasks: ['htmlmin'] 
      }, 
      css: { 
       files: ['public/css/*.css'], 
       tasks: ['cssmin'] 
      } 
     } 
    }); 

    // load plugins 
    grunt.loadNpmTasks('grunt-contrib-jshint'); 
    grunt.loadNpmTasks('grunt-jsdoc'); 
    grunt.loadNpmTasks('grunt-browserify'); 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 
    grunt.loadNpmTasks('grunt-contrib-htmlmin'); 
    grunt.loadNpmTasks('grunt-contrib-cssmin'); 
    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.loadNpmTasks('grunt-newer'); 
}; 

Он работает, насколько я использую только Новые для jsHint. Но если я попробую то же самое с jsDoc или Uglify Я получаю сообщения об ошибках.

Пример:

Я стараюсь это ...

tasks: ['newer:jshint:all', 'newer:jsdoc:all', 'browserify', 'uglify'] 

вместо ...

tasks: ['newer:jshint:all', 'jsdoc', 'browserify', 'uglify'] 

Я получаю ошибки-сообщения:

Running "newer:jsdoc:all" (newer) task 
Warning: Cannot read property 'files' of undefined Use --force to continue. 
Aborted due to warnings. 

Почему это работает для jsHint, но не для остальных? У кого-нибудь есть идея? Был бы очень признателен за некоторые подсказки!

Сердечные приветы

ответ

2

цель вашей jshint задачи является all, так newer:jshint:all правильно.

ваша цель JSDoc является dist, так что вы должны использовать эту цель: newer:jsdoc:dist

для вас это еще проще, у вас есть только одна цель каждого задания (только ваши часы задача имеет несколько целей), так что вы могли только сделайте это так:

['newer:jshint', 'newer:jsdoc', 'browserify', 'uglify'] 
+0

Большое спасибо, что помогло. Хорошее объяснение еще больше стоит! :) – interested

+0

добро пожаловать! – hereandnow78