可以grunt观看远程文件吗?

时间:2015-12-23 16:57:11

标签: javascript gruntjs grunt-contrib-watch

标题几乎说出来了。

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

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

1 个答案:

答案 0 :(得分:0)

connect任务运行自己的服务器来提供静态页面。如果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')
                ];
            }
        }
    }
},

同时从connect:livereload任务

中删除openserver
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