2013-10-18 82 views
0

我目前正在使用Grunt和livereload,但由於某種原因,最後一次在服務器文件更改時不再重新啓動服務器。它正在監視服務器文件,當文件發生更改時,我收到了一條Reload server/some_dir/some_file.js消息,但這似乎不夠。LiveReload不再完全重新啓動服務器

watch: { 
    jade: { 
    files: [ 
     '<%= yeoman.server %>/**/*.jade', 
     '<%= yeoman.app %>/**/*.jade' 
    ], 
    tasks: ['jade'] 
    }, 
    compass: { 
    files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'], 
    tasks: ['compass'] 
    }, 
    livereload: { 
    options: { livereload: true }, 
    files: [ 
     '{.tmp,<%= yeoman.server %>}/**/*.js', 
     '{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css', 
     '{.tmp,<%= yeoman.app %>}/scripts/**/*.js', 
     '{.tmp,<%= yeoman.app %>}/**/*.html', 
     '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' 
    ], 
    tasks: ['livereload'] 
    }, 
    server: { 
    files: [ './server/**/*' ], 
    tasks: [ 'express:dev', 'livereload-start' ] 
    } 
} 

grunt.registerTask('server', [ 
    'clean:server', 
    'jade', 
    'compass:server', 
    'express:dev', 
    'livereload-start', 
    'connect:livereload', 
    'watch' // if I replace this with 'watch:server' the server does restart properly, but html/css updates are obviously gone 
]); 

回答

0

更改

server: { 
    files: [ './server/**/*' ], 
    tasks: [ 'express:dev', 'livereload-start' ] 
} 

server: { 
    files: [ './server/**/*' ], 
    tasks: [ 'express:dev', 'livereload' ] 
} 

不知道最近有什麼變化引起的這個突破。根據git,從項目開始以來就使用了前面的代碼片段。

1

我不知道你使用的是什麼版本的這些包,但livereload不再是(而且一直不是幾個月)在其本身的任務。它現在應該作爲手錶https://github.com/gruntjs/grunt-contrib-watch#optionslivereload的選項運行。

下面是一個例子:

watch: { 
    assets: { 
     files: ['assets/**/*'], 
     tasks: ['copy:assets'] 
    }, 
    scripts: { 
     files: ['scripts/source/*.js'], 
     options: { 
      livereload: true 
     } 
    } 
} 

grunt.registerTask('default', ['watch']); 
+0

不幸的是,我似乎被綁回到使用舊的grunt-contrib-livereload gem,因爲使用grunt-contrib-watch時livereload chrome擴展會拋出。 – chris

+0

真正的問題不在於livereload,而是服務器沒有完全重新啓動服務器文件更改。 – chris