我在 Node.js 中编写了一个应用程序(使用 Express 和 socket.io),我想在开发和连接到 Node.js 应用程序时使用 Grunt 用 livereload 编译我的客户端内容。我怎样才能做到这一点?(由于路径和跨域问题,最好不要在另一个端口中运行 Node.js 应用程序和在另一个端口中运行客户端)
我还安装了 Yeoman,它使用的是开箱即用的 grunt-contrib-livereload 包,但据我了解,它使用 Node.js Connect 服务器来提供客户端文件,因此与我的 Node.js 应用程序分离。
Yeoman 生成的 Gruntfile.js 示例:
var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet;
var mountFolder = function (connect, dir) {
return connect.static(require('path').resolve(dir));
};
// ... cut some parts
grunt.initConfig({
watch: {
livereload: {
files: [
'<%= yeoman.app %>/*/*.html',
'{.tmp,<%= yeoman.app %>}/styles/*.css',
'{.tmp,<%= yeoman.app %>}/scripts/*.js',
'<%= yeoman.app %>/images/*.{png,jpg,jpeg}'
],
tasks: ['livereload']
}
// ..cut some parts
},
connect: {
livereload: {
options: {
port: 9000,
middleware: function (connect) {
return [
lrSnippet,
mountFolder(connect, '.tmp'),
mountFolder(connect, 'app')
];
}
}
}
}
// ..cut some parts
});
grunt.registerTask('server', [
'clean:server',
'coffee:dist',
'compass:server',
'livereload-start',
'connect:livereload',
'open',
'watch'
]);