如何在单个页面中使用来自多个服务器的livereload? (尤其是Grunt.js连接和观看)

时间:2014-12-06 12:36:47

标签: gruntjs livereload grunt-contrib-watch

我正试图让不同项目的不同服务器触发一个网站的livereload工作。我正在使用Grunt.js和grunt-contrib-connect以及grunt-contrib-watch。

以下是一个例子:

  • ProjectA当前正在localhost上运行livereload服务器:33333
  • ProjectB当前正在localhost上运行livereload服务器:44444
  • ProjectC当前正在localhost:55555
  • 上运行livereload服务器

现在让我们说,我在localhost:9800上运行一个应该受益于livereloading的网页 因此,在大多数只存在一个livereload进程的情况下,localhost中会有类似的东西:9800 / index.html:

 
<body>
  ...
  <script type="text/javascript" charset="UTF-8" src="//localhost:35729/livereload.js"></script>
</body>
 

所以,对于多个livereload服务器,我认为我必须包含所有livereload脚本:

 
<body>
...
  <script type="text/javascript" charset="UTF-8" src="//localhost:33333/livereload.js"></script>
  <script type="text/javascript" charset="UTF-8" src="//localhost:44444/livereload.js"></script>
  <script type="text/javascript" charset="UTF-8" src="//localhost:55555/livereload.js"></script>
</body>
 

哪个不行。只有第一个脚本会在浏览器中触发livereload。在grunt-contrib-watch的文档中,他们有一个关于在 watch 任务的不同目标中运行不同服务器的示例。你是如何真正做到这一点的?

感谢您的帮助

以下是我的测试任务:

 
  watch: {

    css: {
      files: ['www/**/*.css'],
      options: {
        livereload: 33333
      }
    },

    html: {
      files: ['www/**/*.html'],
      options: {
        livereload: 44444
      }
    },

    js: {
      files: ['www/**/*.js'],
      options: {
        livereload: 55555
      }
    },
...
}

1 个答案:

答案 0 :(得分:2)

此配置无效。

livereload.js实例化一个全局对象LiveReload见(livereload-js/src/startup.coffee)。 并且每个LiveReload对象只有一个可用的Web插槽,因此您无法使用3个插槽。

我想拥有与您相同的配置,但今天我找不到适合它的工作