2

Я новичок в nodeJS и хрюкаю. У меня есть этот Gruntfile в этом проекте, и я хочу сделать live reload для всех html-файлов в моем проекте, так что мне не нужно постоянно обновлять свой браузер, чтобы обнаруживать новые изменения. Как-то я сталкиваюсь ошибка со следующим кодом:Live reload с помощью grunt-contrib-connect и grunt-contrib-watch

module.exports = function (grunt) 
{ 
    // Project configuration. 
    grunt.initConfig(
    { 
     // Task configuration. 
     jshint: 
     { 
      options: 
      { 
       curly: true, 
       eqeqeq: true, 
       immed: true, 
       latedef: true, 
       newcap: true, 
       noarg: true, 
       sub: true, 
       undef: true, 
       unused: true, 
       boss: true, 
       eqnull: true, 
       browser: true, 
       globals: {} 
      }, 
      gruntfile: 
      { 
       src: 'Gruntfile.js' 
      }, 
      lib_test: 
      { 
       src: ['lib/**/*.js', 'test/**/*.js'] 
      } 
     }, 
     connect: 
     { 
      server: 
      { 
       options: 
       { 
        hostname: 'localhost', 
        port: 80, 
        base: 'src', 
        keepalive: true, 
        livereload: true 
       } 
      } 
     }, 
     watch: 
     { 
      options: 
      { 
       livereload:true 
      } 
     } 

    }); 

    // These plugins provide necessary tasks. 
    grunt.loadNpmTasks('grunt-contrib-connect'); 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 
    grunt.loadNpmTasks('grunt-contrib-jshint'); 
    grunt.loadNpmTasks('grunt-contrib-watch'); 

    // Default task. 
    grunt.registerTask('default', ['connect', 'watch']); 


}; 

Кажется, что когда я начинаю «черновое» по умолчанию он не будет выполнять задачи часов, потому что во время подключения это KeepAlive.

Я буду признателен, если что-нибудь 1 может объяснить мне, почему у меня есть эта ошибка, когда JSHint проверяет мой код и предлагает решение этого.

ответ

6

Задача watch не имеет задач или файлов. Для того, чтобы работать с grunt-contrib-connect, вам необходимо включить больше, чем просто вариант livereload, например, так:

watch: { 
    options: { 
     livereload: true 
    }, 
    taskName: { // You need a task, can be any string 
     files: [ // Files to livereload on 
      "app/js/*.js", 
      "app/templates/*.html" 
     ] 
    } 
} 

Или попеременно:

watch: { 
    taskName: { 
     options: { // Live reload is now specific to this task 
      livereload: true 
     }, 
     files: [ // Files to livereload on 
      "app/js/*.js", 
      "app/templates/*.html" 
     ] 
    } 
} 

Все файлы, которые соответствуют модели Глоб здесь то должен работать как вы ожидаете. Вам не нужно указывать здесь параметр tasks, если вы просто перезагружаете их для браузера.

Кроме того, если вы собираетесь использовать ваш сервер connect вместе watch, вы должны удалить оставайся в живых параметр, так как это задача блокировки и может предотвратить выполнение watch задачи:

connect: { 
    server: { 
     options: { 
      port: 8080, 
      base: 'src', 
      livereload: true 
     } 
    } 
} 
+0

мне это помогло. thanks @ dmaloney.calu – breezy

+0

Как и ваше предложение, после удаления параметра keepalive он работает для меня. – soarinblue

0

Вам нужно node:true в вашей конфигурации jshint, посмотрите на этот пример .jshintrc.

Для наблюдения за часами и пеленью необходимо указать файлы, которые необходимо посмотреть, и какие задачи выполнить в вашем файле Grunt, еще раз взгляните на этот образец Gruntfile.

Например, как это:

watch: { 
     coffee: { 
     files: ['<%%= config.app %>/scripts/{,*/}*.{coffee,litcoffee,coffee.md}'], 
     tasks: ['coffee:dist'] 
     }, 
    } 

В этом примере, вы указываете Glob, как files опции и всякий раз, когда изменяются файлы в соответствии задачи выполняются.

+0

жаль, что я не совсем возьми. Вы говорите о другом файле (jshint.config) или говорите о параметрах в jshint в вышеприведенном файле Grunt? –

+0

вы можете иметь либо в своем случае, если у вас есть это в вашем файле Grunt выше. @Zackery – user3995789

+0

ok Я получаю jshint, уже работающий, 2k плюс ошибка: P. Но он не решает проблему перегрузки в реальном времени –

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

  • Нет связанных вопросов^_^