【问题标题】:Can grunt watch remote files?grunt 可以查看远程文件吗?
【发布时间】:2015-12-23 16:57:10
【问题描述】:

标题已经说明了这一点。

一个小细节: 我使用 Joomla 构建网站,通常我在本地计算机上进行,并在完成后上传整个网站。但是对于一些项目我需要在日常工作中直接修改服务器上的.js.css文件。我刚认识Grunt,我希望它为我做一些关于像uglify 或autoprefix 这样的文件的杂务。我阅读了很多文章并了解到 Grunt 可以监视本地文件,因此当它们被更改时,它会针对它们运行一些任务。

由于我是直接在服务器上修改文件,Grunt 也可以看这些文件吗? 或者,因为我使用的是 Fireftp,它允许我下载目标文件的临时副本,并且每当我对临时文件进行更改并保存时,它将被上传回来并覆盖服务器上的目标文件,是否可以在文件上传回来之前 grunt 开始执行任务?

【问题讨论】:

    标签: javascript gruntjs grunt-contrib-watch


    【解决方案1】:

    连接任务运行它自己的服务器来提供静态页面。如果watch:livereload 任务中提到的文件有任何更改,livereload 任务会刷新页面。

    您不需要默认的静态服务器。所以去从 Gruntfile 中删除连接任务

    connect: {
        options: {
            port: 9000,
            // change this to '0.0.0.0' to access the server from outside
            hostname: 'localhost'
        },
        livereload: {
            options: {
                middleware: function (connect) {
                    return [
                        lrSnippet,
                        mountFolder(connect, '.tmp'),
                        mountFolder(connect, 'app')
                    ];
                }
            }
        },
        test: {
            options: {
                middleware: function (connect) {
                    return [
                        mountFolder(connect, '.tmp'),
                        mountFolder(connect, 'test')
                    ];
                }
            }
        },
        dist: {
            options: {
                middleware: function (connect) {
                    return [
                        mountFolder(connect, 'dist')
                    ];
                }
            }
        }
    },
    

    同时从 server 任务中删除 connect:livereloadopen

    grunt.task.run([
        'clean:server',
        'concurrent:server',
        'livereload-start',
        'connect:livereload',      // Remove This line
        'open',                    // Remove This line
        'watch'
    ]);
    

    然后在您的 html 文件中添加以下脚本。

    <!-- livereload script -->
    <script type="text/javascript">
        document.write('<script src="http://'
            + (location.host || 'localhost').split(':')[0]
            + ':35729/livereload.js?snipver=1" type="text/javascript"><\/script>')
    </script>
    

    来源:Grunt Live reloading with external server

    另一个interesting discussion

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多