2015-10-01 3 views
0

Я пытаюсь создать сайт с Bootstrap, используя Grunt для запуска задач. Я пытался выяснить, почему мой gruntfile, похоже, не выполняет никаких задач, кроме «watch», но я не могу найти ответ. Ошибок не обнаружено. В терминале time-grunt покажет время выполнения (хотя никаких задач не выполняется), а затем он сказал бы «Ожидание ....», что означает, что часы работают. Может ли кто-то пролить свет на то, что я сделал неправильно в моем файле grunt? Любая помощь будет принята с благодарностью :)Grunt не выполняет никаких задач, кроме часов

module.exports = function(grunt) { 

    //time 
    require('time-grunt')(grunt); 

    grunt.initConfig({ 

     pkg: grunt.file.readJSON('package.json'), 

     sass: { 
      dist: { 
       options: { 
        sourceMap: true, 
        style: 'compressed', 
       }, 

       files: { 
        'assets/css/style.css' : 'assets/scss/style.scss', 
       } 
      } 
     }, 

     copy: { 
      scripts: { 
       cwd: 'bower_components/jquery/dist/', 
       expand: true, 
       src: [ 
        'jquery.min.js', 
        ], 
       dest: 'assets/js/', 
       filter: 'isFile', 
      } 
     }, 

     concat: { 
      options: { 
       separator: ';', 
      }, 
      js: { 
       src: [ 
        'bower_components/bootstrap-sass/assets/javascripts/bootstrap.js', 
        'bower_components/bootstrap-sass/assets/javascripts/bootstrap/button.js', 
        'bower_components/bootstrap-sass/assets/javascripts/bootstrap/collapse.js', 
        'bower_components/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js', 
        'bower_components/bootstrap-sass/assets/javascripts/bootstrap/modal.js', 
        'bower_components/bootstrap-sass/assets/javascripts/bootstrap/tab.js', 
        'bower_components/bootstrap-sass/assets/javascripts/bootstrap/transition.js', 
       ], 
       dest: 'assets/js/bootstrap.js', 
      }, 
      sass: { 
       src: [ 
        'bower_components/bootstrap-sass/assets/stylesheets/_bootstrap.scss', 
        'bower_components/bootstrap-sass/assets/stylesheets/bootstrap/**/*.scss' 
       ], 
       dest: 'assets/scss/style.scss' 
      } 
     }, 

     uglify: { 
      options: { 
       mangle: false, 
      }, 

      my_target: { 
       files: { 
        'assets/css/style.min.css' : ['assets/css/style.css'], 
        'assets/js/bootstrap.min.js' : ['assets/js/bootstrap.js'] 
       } 
      } 
     }, 

     watch: { 
      gruntfile: { 
       files: 'Gruntfile.js', 
       tasks: ['jshint:gruntfile'], 
       options: { 
        livereload: true 
       } 
      }, 
      src: { 
       files: ['assets/js/*.js', 'assets/scss/*.scss'], 
       tasks: ['default'], 
       options: { 
        livereload: true 
       } 
      } 
     }, 

     jshint: { 
      all: ['Gruntfile.js', 'assets/**/*.js'] 
     }, 


    }); 

    grunt.loadNpmTasks('grunt-contrib-sass'); 
    grunt.loadNpmTasks('grunt-contrib-copy'); 
    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.loadNpmTasks('grunt-contrib-concat'); 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 
    grunt.loadNpmTasks('grunt-contrib-jshint'); 

    grunt.registerTask('build', ['sass', 'copy', 'concat', 'uglify']); 
    grunt.registerTask('default', ['watch', 'jshint']); 
}; 
+0

Вы пробовали «ворчать»? это вызовет задачу сборки. – Harikrishnan

+0

В дополнение к комментарию от Харикришнана 'grunt' будет запускать задачу' default', которая смотрит и jshint. Я считаю, что вы должны переместить 'watch' в конец массива или блокировать выполнение других задач. –

+0

ладно, спасибо вам обоим. Я набрал «grunt build» в терминал, а также поставил «смотреть» в конце массива, и теперь он работает! – monsty

ответ

0

Ваши задачи имена и заказы были немного перепутал, вот 3 очка, чтобы полностью исправить - и обеспечить StackOverflow с ответом на вопрос:

  • watch всегда должен быть последней задачей для запуска, поскольку он не заканчивается. Итак:

    grunt.registerTask('default', ['jshint', 'watch']); 
    
  • , если вы хотите, чтобы выполнить задачу (например, build просто вызывая ворчание, вы должны положить его в вашу задачу по умолчанию, так:

    grunt.registerTask('default', ['jshint', 'build', 'watch']); 
    
  • ваши часы задача не должна запустить саму задачу часов, поэтому watch.src не должна вызывать default (как по умолчанию включает в себя часы):

    watch: { 
        gruntfile: { 
         files: 'Gruntfile.js', 
         tasks: ['jshint:gruntfile'], 
         options: { 
          livereload: true 
         } 
        }, 
        src: { 
         files: ['assets/js/*.js', 'assets/scss/*.scss'], 
         tasks: ['jshint', 'build'], 
         options: { 
          livereload: true 
         } 
        } 
    }, 
    
+0

Спасибо за советы. Очищает мое понимание того, как выполнять задачи по умолчанию и строить. – monsty

Смежные вопросы