我在开发过程中使用 grunt、connect 和 livereload 来提供测试页面(它是一个平面 HTML 页面),并且我想在手机上测试该网站。通常,我使用网络共享来执行此操作,即使用 Mac 的本地 URL (
my-imac.local
) 导航到该网站。
当我使用 Python 的 SimpleHTTPServer 提供页面时,效果很好。当我使用 grunt/connect 时,它在那里无法访问(尽管它仍然可以在本地主机上访问)。如何配置连接来响应这些请求?
我的gruntfile,供参考:
var path = require('path');
var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet;
var folderMount = function folderMount(connect, point) {
return connect.static(path.resolve(point));
};
module.exports = function(grunt) {
function registerRobustTasks(name, tasks) {
grunt.registerTask(name, function() {
// so we don't have stupid issues with grunt crashing
// every time a test fails...
grunt.option('force', true);
grunt.task.run(tasks);
});
}
grunt.initConfig({
pkg : grunt.file.readJSON('package.json'),
livereload : {
port : 48341
},
connect : {
livereload : {
options : {
port : 48342,
middleware : function(connect, options) {
return [lrSnippet, folderMount(connect, '.')];
}
}
}
},
regarde : {
html : {
files : ['*.html'],
tasks : ['livereload']
}
}
});
grunt.loadNpmTasks('grunt-regarde');
grunt.loadNpmTasks('grunt-contrib-livereload');
grunt.loadNpmTasks('grunt-contrib-connect');
registerRobustTasks('default', ['livereload-start', 'connect', 'regarde']);
};
事实证明这很简单:我需要连接服务器上的
hostname : '*'
选项。
最简单的方法是使用移动设备与计算机位于同一 LAN 上,然后在手机上进行测试,使用计算机的 IP 地址和您选择让服务器侦听的端口。例如
http://ipaddress:port
。
要验证 grunt 是否正在运行服务器,您可以使用 shell 中的
lsof
程序。
$ lsof -i :port
将返回您计算机上绑定到指定端口的程序。
同样,如果你删除端口号,你可以看到打开文件的列表(unix 将所有内容都视为文件),有时你也可以找到一些有趣的东西。
$ lsof -i