使用Node和Gulp设置构建服务器

时间:2016-10-18 12:37:31

标签: node.js gulp continuous-integration

我正在开发一个前端程序包,这是我的环境:

  • IDE:Visual Studio(我在Windows上,我们使用TypeScript)
  • 包管理员:NPM
  • 任务选手:Gulp
  • CI:TeamCity

我的问题是我试图避免在我的构建服务器上全局安装节点和Gulp(主要是因为我不想打扰这个 - 安装,更新,同步等)。

所以我找到了一个N​​uGet包(https://www.nuget.org/packages/Npm.js/),它允许我在没有在计算机上安装节点的情况下恢复所有包。但问题是我安装的本地Gulp假设它旁边有一个node.exe或机器的路径:

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "%~dp0\..\gulp\bin\gulp.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node  "%~dp0\..\gulp\bin\gulp.js" %*
)

现在显然这不起作用,因为我没有在构建机器上安装节点,并且node_modules中没有本地节点安装。

那么有没有办法避免在每个构建服务器上全局安装我的构建工具?或者Node和Gulp打算安装在哪里?应该如何保持更新?它不像每隔几个月发布一次的Visual Studio版本......或者您是否只是忽略了构建工具的频繁发布?

我还可以将NuGet包添加到路径中,但是(node.exe所在的路径)取决于NuGet包的版本,并且每次更新时都需要更多维护。所以我不喜欢这样......

2 个答案:

答案 0 :(得分:0)

这不是最优的,但这是我最终做的事情:我使用NuGet package在MSBuild中设置环境变量并创建了以下构建配置:

<Target Name="GulpBuild">
    <SetEnvVariable Name="path" Value="%path%;..\packages\Node.js.5.3.0" />
    <Exec Command="node_modules/.bin/gulp" />
</Target>

现在,当我在VS(CTRL + Shift + B)中构建解决方案时,它将节点位置添加到路径,然后调用gulp。当然我想我可以自己编写gulp命令,包括节点路径。 在任何情况下,这当然不是最佳的,因为如果我更新Node.js版本,我需要手动更新位置,但我找不到更好的解决方案。

至少路径配置是在存储库内定义的,不依赖于任何机器配置。

答案 1 :(得分:0)

这里很晚,但我认为你可以设置你的gulp项目来运行安装到node_modules的gulp。例如,在npm start上,您可以使用二进制路径。

简而言之,您是否可以将项目更改为不使用全局gulp?它可能是看起来工作的工作。