转发grunt连接到不同的URL

时间:2014-11-03 19:32:53

标签: node.js gruntjs grunt-contrib-connect

我在开发环境中使用grunt connect livereload。

我希望能够调用/ server下的生产API。

要做到这一点,我需要指示来自

的任何电话
  

http://localhost:9000/server

  

http://www.production-server.com/server

这对我有好处,因为有时我想在开发模式下对生产服务器进行测试。

这是我当前的连接配置(由Yeoman生成):



connect: {
  options: {
    port: 9000,
    // Change this to '0.0.0.0' to access the server from outside.
    hostname: 'localhost',
    livereload: 35729
  },
  livereload: {
    options: {
      open: true,
      middleware: function(connect, options, middlewares) {
        return [
          connect.static('.tmp'),
          connect().use(
            '/bower_components',
            connect.static('./bower_components')
          ),
          connect.static(appConfig.app)
        ];
      }
    }
  },
  test: {
    options: {
      port: 9001,
      middleware: function(connect) {
        return [
          connect.static('.tmp'),
          connect.static('test'),
          connect().use(
            '/bower_components',
            connect.static('./bower_components')
          ),
          connect.static(appConfig.app)
        ];
      }
    }
  },
  dist: {
    options: {
      open: true,
      base: '<%= yeoman.dist %>'
    }
  }
},
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:8)

我发现了问题和解决方案:

要做的第一件事是使用:grunt-connect-proxy grunt任务才能进行代理(你可以做任何事情)。配置不明显,但您可以在此处找到所有信息(和示例):https://www.npmjs.org/package/grunt-connect-proxy

我的具体问题是因为我的服务器不接受任何来自同一域的呼叫,所以我所做的就是添加&#34; header&#34;使用我的域名将配置属性添加到配置中。这是新配置的样子:

    connect: {
        options: {
            port: 9000,
            // Change this to '0.0.0.0' to access the server from outside.
            hostname: 'localhost',
            livereload: 35729
        },
        server: {
            proxies: [
                {
                    context: '/server',
                    host: 'production-server.com',
                    post: 80,
                    changeOrigin: true,
                    headers: {
                        host: 'simple-layout.com'
                    }
                }
            ]
        },
        livereload: {
            options: {
                open: true,
                middleware: function (connect) {
                    return [
                        proxySnippet,
                        connect.static('.tmp'),
                        connect().use(
                            '/bower_components',
                            connect.static('./bower_components')
                        ),
                        connect.static(appConfig.app)
                    ];
                }
            }
        },
        test: {
            options: {
                port: 9001,
                middleware: function (connect) {
                    return [
                        connect.static('.tmp'),
                        connect.static('test'),
                        connect().use(
                            '/bower_components',
                            connect.static('./bower_components')
                        ),
                        connect.static(appConfig.app)
                    ];
                }
            }
        },
        dist: {
            options: {
                open: true,
                base: '<%= yeoman.dist %>'
            }
        }
    },