Web api - 使用Gulp任务动态设置端点地址

6 javascript c# asp.net-web-api typescript gulp

如我之前的问题所述:

Asp.net web API 2分离Web客户端和Web服务器开发

为了完全分离客户端和服务器,我想设置一个变量来保存客户端请求的终点.在开发客户端时,请求将被发送到返回默认值的"存根服务器",以便可以在不依赖于服务器端开发的情况下开发客户端.该存根服务器在与真实服务器端口不同的一个端口上运行,并且当在服务器和客户端之间运行集成时,在分支集成中,该变量将保存真实服务器端口.

就此而言,我了解到像Gulp这样的构建工具可以帮助我.

我正在使用Tfs源代码控制.

我想要的是,例如,编写一个如下所示的任务:

gulp.task('setEndPoint', function() {
  var branchName = // How do I get it?
  if (branchName == "Project.Testing")
      endPoint = "localhost/2234"
  if (branchName == "Project.Production")
      endPoint = "localhost/2235"
});
Run Code Online (Sandbox Code Playgroud)

有没有办法让当前分支运行任务?

谢谢你的帮助

Bru*_*cia 1

与其在脚本内部检查分支,不如使用参数来区分开发版本和产品版本。

你可以使用yargs来实现:

var argv = require('yargs').argv;
gulp.task('setEndPoint', function() {
  if (argv.dev)
      endPoint = "localhost/2234"
  else
      endPoint = "localhost/2235"
});
Run Code Online (Sandbox Code Playgroud)

yargs会将脚本的参数绑定到对象的属性:

gulp build --bla
Run Code Online (Sandbox Code Playgroud)

将允许您在 gulp 任务中执行以下操作:

var argv = require('yargs').argv;
if (argv.bla) {
    // this line runs
}
Run Code Online (Sandbox Code Playgroud)

这样,如果您gulp build不带参数调用,它不会将dev设置为 true (argv.dev 将是未定义的),并且会选择prod端点。这会发生在 TFS 上,或者当您想要在开发盒上运行真实后端时。

对于无后端开发,您可以调用:gulp build --dev它将选择开发端点。

如果您愿意,可以argv.prod在 TFS 上使用和设置gulp build --prod,因此不传递任何参数将使用存根服务器