我对Sails和Grunt都是陌生的,所以我可能会错过显而易见的东西。
试图在文件更改时自动在浏览器中刷新我的Sails应用程序。

我使用sails lift启动应用程序,它在默认端口1337上运行。

我尝试将options: {livereload:true}添加到grunt-contrib-watch配置中,但据我了解,我需要以某种方式将livereload JavaScript注入(inject)到我的页面中?

我尝试将grunt-contrib-connectlivereload选项一起使用以注入(inject)JavaScript,但它似乎只是启动了另一台服务器。当我导航到启动的服务器(localhost:8000)时,我只看到文件夹结构。但是,注入(inject)了livereload JavaScript。

如果可能,我想避免使用livereload Chrome插件。

将livereload JavaScript注入(inject)我的Sails应用程序的最佳方法是什么?还是应该只使用其他工具,例如Br​​owsersync?

谢谢! :)

最佳答案

  • 将livereload选项添加到task/config/watch.js

  •     module.exports = function(grunt) {
    
         grunt.config.set('watch', {
            api: {
    
                // API files to watch:
                files: ['api/**/*', '!**/node_modules/**']
            },
            assets: {
    
                // Assets to watch:
                files: ['assets/**/*', 'tasks/pipeline.js', '!**/node_modules/**'],
    
                // When assets are changed:
                tasks: ['syncAssets' , 'linkAssets']
            },
            // ADD THIS
            options: {
              livereload: true,
            },
        });
    
        grunt.loadNpmTasks('grunt-contrib-watch');
    };
    
  • 将livereload脚本添加到布局中,位于</body>标记之前的末尾,默认情况下为views/layout.ejs:

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

    除本地主机外,您可以使用服务器的IP或DNS名称

    如果api或 Assets 文件夹中的文件已更改,则将刷新页面。

    默认情况下,Ggrunt-contrib-watch使用 35729 端口。您可以指向其他端口,例如livereload: 8000
  • Similar question, but not so detailed answer
  • Ggrunt-contrib-watch docs

  • 编辑:
    好吧,我真的不知道这是否完全正确,但是看起来您可以覆盖config/env/development.js中的布局设置。添加类似的内容:

    module.exports = {
        views: {
            layout: 'dev'
        }
    }
    

    然后,您可以创建单独的布局文件views/dev.ejs,在其中可以添加livereload脚本和其他开发参数。您也可以用相同的方式添加livereload键。

    关于sails.js - 获取livereload以与Sails.js一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31071363/

    10-15 14:38