如何设置grunt服务器的基URI

时间:2015-01-07 13:15:22

标签: node.js gruntjs connect yeoman

我使用了yeoman webapp生成器来构建我的应用程序。

在开发过程中,我只是使用grunt serve来预览应用。

现在我已准备好部署我的应用程序,我发现生产环境的根上下文与开发环境不同。换句话说,而不是:

http://base:port/

我被迫使用

http://base:port/subdir_name/

这当然打破了一些东西。

有没有办法配置grunt使用的connect服务器,将这个新的根上下文作为它的基本URI?

1 个答案:

答案 0 :(得分:2)

我不确定您是否已找到解决方案,但我设法通过使用grunt-connect-proxy重写其重定向功能来解决此问题。这就是我的配置:

connect: {
  options: {
    port: 8001,
    // Change this to '0.0.0.0' to access the server from outside.
    hostname: '0.0.0.0',
    livereload: 35729
  },
  proxies: [
    {
        context: '/subdir_name/',
        host: 'localhost',
        port: 8001,
        https: false,
        xforward: false,
        rewrite: {
          '^/subdir_name': ''
        },
        headers: {
            'x-forwarded-server': 'Grunt Localhost development'
        }
    }
  ],
  livereload: {
    options: {
      open: true,
      middleware: function (connect, options) {
        if (!Array.isArray(options.base)) {
            options.base = [options.base];
        }

        // Setup the proxy
        var middlewares = [];

        middlewares.push(connect.static('.tmp'));
        middlewares.push(connect().use(
            '/bower_components',
            connect.static('./bower_components')
          ));
        middlewares.push(connect().use(
            '/app/styles',
            connect.static('./app/styles')
          ));
        middlewares.push(connect.static(appConfig.app));
        middlewares.push(require('grunt-connect-proxy/lib/utils').proxyRequest);
        // Serve static files.
        options.base.forEach(function(base) {
            middlewares.push(connect.static(base));
        });

        // Make directory browse-able.
        var directory = options.directory || options.base[options.base.length - 1];
        middlewares.push(connect.directory(directory));
        return middlewares;
      }
    }
  },