2016-01-05 4 views
1

Мы работаем над проектом с несколькими другими разработчиками GIT, используя тот же репо, он отлично работает со всеми остальными. Однако, когда я запускаю grunt, он выполняется несколько раз, кажется, работает в бесконечном цикле, без каких-либо изменений. Это происходит только со мной на другом компьютере. Я рассматриваю, что, возможно, мне нужно что-то еще установленное. Я удалил узел, npm и переустановил с помощью homebrew, который я также использую для обновлений. Узел v5.3.0, npm 3.3.12 Запуск Mavericks.Grunt выполняет несколько раз, создает бесконечный цикл

Что мне не хватает?

Вот петля:

Reloading watch config... 

Running "watch" task 
Waiting... 
>> File "Gruntfile.js" changed. 
>> File "js/all-js/bootstrap-hover-dropdown.min.js" changed. 
>> File "js/all-js/site.js" changed. 
Running "uglify:build" (uglify) task 
>> 1 file created. 

Done, without errors. 
Completed in 3.740s at Tue Jan 05 2016 13:11:07 GMT-0500 (ECT) - Waiting... 
[BS] File changed: js/site.min.js 

Reloading watch config... 

Running "watch" task 
Waiting... 
>> File "js/all-js/bootstrap.js" changed. 
>> File "Gruntfile.js" changed. 
Running "uglify:build" (uglify) task 
>> 1 file created. 

Done, without errors. 
Completed in 1.869s at Tue Jan 05 2016 13:11:10 GMT-0500 (ECT) - Waiting... 
[BS] File changed: js/site.min.js 
>> File "js/all-js/bootstrap-hover-dropdown.min.js" changed. 
Running "uglify:build" (uglify) task 
>> 1 file created. 

Done, without errors. 
Completed in 1.885s at Tue Jan 05 2016 13:12:04 GMT-0500 (ECT) - Waiting... 
[BS] File changed: js/site.min.js 

Reloading watch config... 

Running "watch" task 
Waiting... 
>> File "Gruntfile.js" changed. 

Вот мои Gruntfile.js:

module.exports = function(grunt) { 

//Get all tasks from the package.json file 
require("matchdep").filterDev("grunt-*").forEach(grunt.loadNpmTasks); 

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

    /* Concurrent Task */   

    concurrent: { 
     watch: { 
      tasks: ['watch', 'compass:dist', 'browserSync'], 
      options: { 
       logConcurrentOutput: true 
      } 
     } 
    }, 

    /* SASS task */ 

    compass: { 
     dist: { 
      options: { 
       sassDir: ['SASS/'], 
       cssDir: ['css/'], 
       environment: 'development', /* development | production */ 
       importPath: ['SASS/'], 
       outputStyle: 'compressed', /* expanded for development | compressed for production */ 
       watch: true, 
       sourcemap: true 
      }, 
     }, 
     live: { 
      options: { 
       sassDir: ['SASS/'], 
       cssDir: ['css/'], 
       environment: 'production', /* development | production */ 
       importPath: ['SASS/'], 
       outputStyle: 'compressed', /* expanded for development | compressed for production */ 
       watch: false, 
       force: true,      
      }, 
     },   
    },  

    /* Javascript Tasks */ 

    uglify: { 
     // Uglify files 

     build: { 
      src: [ 
       'js/all-js/bootstrap.js', 
       'js/all-js/site.js' 
      ], 
      dest: 'js/site.min.js' 
     } 

    }, 

    /* Run tasks when needed */ 

    watch: {    
     js: { 
      files: ['js/all-js/*.js'], 
      tasks: ['uglify'], 
      options: { livereload: true } 
     }, 
     gruntfile: { 
      files: ['Gruntfile.js'], 
      options: {reload: true} 
     } 
    }, 

    /* Browser Reload with BrowserSync */ 

    browserSync: { 
     bsFiles: { 
      src : [ 
       'css/**/*.css', 
       'js/site.min.js', 
       '**/*.php' 
      ] 
     }, 
    }  


}); 

// Where we tell Grunt what to do when we type "grunt" into the terminal. 

grunt.registerTask('default', ['concurrent:watch']); 
grunt.registerTask('live', ['compass:live']); 

};

Вот мой package.json файл:

{ 
     "name": "ourframework", 
     "version": "0.1.0", 
     "devDependencies": { 
     "grunt": "~0.4.1", 
     "grunt-contrib-compass": "*", 
     "grunt-browser-sync": "*", 
     "grunt-contrib-watch": "*", 
     "grunt-concurrent": "*", 
     "grunt-contrib-uglify": "*",  
     "matchdep": "*" 
    } 
    } 
+0

Я только что протестировал эту точную настройку на другом компьютере и отлично работает! –

+0

Пожалуйста, прочтите мой ответ ниже - он всегда будет работать нормально, так как нет проблем. «Цикл», который вы видите, это просто компиляции, которые происходят позже, когда что-то меняется. – duncanhall

ответ

0

Посмотрите на метках времени в выходном сигнале хрюкать, например:

Completed in 3.740s at Tue Jan 05 2016 13:11:10 
Completed in 1.885s at Tue Jan 05 2016 13:12:04 

Уведомления этой перекомпиляция минуту друг от друга - вы работаете ворчание watch задача. При обнаружении каких-либо изменений будет наблюдаться набор указанных файлов и повторное выполнение задач.

Нет «петли» - он будет просто перекомпилироваться каждый раз, когда что-то меняется, что часто желательно.

Вы можете увидеть, ваша задача по умолчанию устанавливается в concurrent:watch

grunt.registerTask('default', ['concurrent:watch']); 

Так что, если вы просто введите grunt, он будет работать с этой задачей.

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