2013-05-14 6 views
5

Próbuję skonfigurować grunt, aby ożywić ponownie pliki js i mniej/css przy zmianach. Podczas gdy chrząknięcie prawidłowo "ogląda" i wykonuje przypisane zadania, to nie aktualizuje plików. Poniżej znajduje się moja konfiguracja, czy ktoś widzi, co jest nie tak?Grunt Live-Reload przez Watch

module.exports = function(grunt) { 
grunt.initConfig({ 
    pkg: grunt.file.readJSON("package.json"), 
    jshint: { 
     files: ["Gruntfile.js", "src/javascripts/**/*.js"], 
     options: { 
      globals: { 
       jQuery: true, 
       console: true, 
       module: true 
      } 
     } 
    }, 
    concat: { 
     options: { 
      stripBanners: true, 
      banner: "/*! <%= pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today('yyyy-mm-dd') %> */\n", 
      separator: "\n" 
     }, 
     js: { 
      src: ["src/javascripts/main.js", "src/javascripts/**/*.js"], 
      dest: "../app/assets/javascripts/application.js" 
     }, 
     less: { 
      src: ["src/stylesheets/**/*.less"], 
      dest: "../app/assets/stylesheets/application.less" 
     } 
    }, 
    watch: { 
     js: { 
      files: ["<%= jshint.files %>"], 
      tasks: ["jshint", "concat:js"], 
      options: { 
       livereload: true 
      } 
     }, 
     less: { 
      files: ["<%= concat.less.src %>"], 
      tasks: ["concat:less"], 
      options: { 
       livereload: true 
      } 
     } 
    } 
}); 

grunt.loadNpmTasks("grunt-contrib"); 

grunt.registerTask("default", ["jshint", "concat"]); 
}; 

Uwaga: Zawarto poniższy tag skryptu w tagu nagłówka html.

<script src="http://localhost:35729/livereload.js"></script> 

Odpowiedz

9

Twoja konfiguracja próbuje uruchomić 2 serwery odświeżania na żywo na tym samym porcie. Jeśli chciałbyś 1 na żywo serwera przeładowania do uruchomienia na wszystkich swoich celów zegarków potem po prostu dodać 1 opcję livereload na poziomie zadanie:

watch: { 
    options: { 
    livereload: true 
    }, 
    js: { 
    files: ["<%= jshint.files %>"], 
    tasks: ["jshint", "concat:js"], 
    }, 
    less: { 
    files: ["<%= concat.less.src %>"], 
    tasks: ["concat:less"], 
    } 
} 
+0

Skonfigurowałem zegarek zgodnie z powyższymi sugestiami, ale niestety nadal nie można wykonać aktualizacji na żywo. – Ari

+6

Możesz zrobić 'grunt watch --verbose', który powie ci, kiedy przeładuje się w konsoli. Chociaż zauważyłem, że używasz 'grunt.loadNpmTasks ('grunt-contrib')' ... który używa starszej wersji zadania oglądania, które nie ma przeładowania na żywo. Polecam * nie * przy użyciu 'grunt-contrib' i ładowanie każdego modułu osobno. –

+1

Ładowanie każdego modułu indywidualnie rozwiązało problem. Dzięki. – Ari

0

mi brakuje tagu script i po dodaniu tego

to zaczął pracować dla mnie. :)!

Dzięki,