javascript 为Grunt连接服务器配置别名目录

yrdbyhpb  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(103)

我的源代码中有一些文件夹,我想通过一个grunt任务使用connect来提供。我的文件夹结构如下…

  • /
  • /源代码
  • index.jade
  • /样式
  • main.css
  • /dist
  • index.html
  • /docs
  • index.html

我的咕噜声配置看起来像这样...

grunt.initConfig({
    connect: {
        options: {
            port: 8080,
            hostname: '0.0.0.0',
            livereload: 35729
        },
        app: {
            options: {
                middleware: function (connect) {
                    return [
                        connect.static(require('path').resolve(pkg.paths.dist)),
                        connect.static(require('path').resolve(pkg.paths.src)),
                        connect.static(require('path').resolve(pkg.paths.docs))
                    ];
                }
            }
        },
    }
})

启动一个服务器,访问http://localhost:8080/将给予来自distindex.html文件-它是从index.jade编译而来的,它引用了main.cssmain.css是从src忠实地提供的。这一切都很好,而且效果很好。
现在我想从docs访问index.html文件,但是在一个别名url上-所以是http://localhost:8080/mycustomurl。我不想把我的文档放在一个子文件夹中,我只想配置connect来服务来自docs目录的与mycustomurl匹配的url。
我如何修改我的配置来实现这一点?

dvtswwa3

dvtswwa31#

使用自定义中间件。middleware选项需要返回中间件数组的函数。

custom_middleware: {
  options: {
    middleware: function(connect, options, middlewares) {
      return [connect.static(require('path').resolve(pkg.paths.dist)),
              connect.static(require('path').resolve(pkg.paths.src)),
              function (req, res, next) {
                if (req.url !== '/custom/url') {
                  next();
                  return;
                }
                // res.sendFile(pkg.paths.docs + '/index.html');
                // you can access the "anything.html" by parsing the req.url
                var file = req.url.split('/');
                file = file[file.length-1];
                res.sendFile(pkg.paths.docs + file);
              }
      ];
    }
  }
}

有关更多配置选项,请参见example Gruntfile

相关问题