我可以使用Grunt和TFS吗?

7

我的新项目需要我使用TFS + Git。

坦白说:我对TFS一无所知。

我想为我的JavaScript项目设置构建。我想使用Grunt。

这可行吗?有人用过Grunt和TFS吗?


1
你看过这个 https://github.com/danactive/grunt-tfs-unlock 吗? - elclanrs
5个回答

18

在我们目前的项目中,我们正在使用Grunt和TFS。我已经通过从批处理文件中调用它来将Grunt与TFS集成,您可以在项目文件的Pre- or Post-BuildEvents部分中连接它。

但是,由于TFS将使用特定的环境变量执行构建,因此您需要使用绝对路径。

我们所做的事情清单

  1. 在您的构建机器上安装node.js(当然还要在您的开发机器上安装)
  2. 在JavaScript项目的根目录下添加一个package.json文件。
  3. 使用npm在本地安装grunt-cli。 使用--save-dev标志将此软件包添加到package.json中的开发依赖项部分
  4. 对于所有其他所需的软件包,请使用与步骤3相同的标志运行npm
  5. 编写一个批处理文件(请参见下面的示例),其中您将:
    1. 使用绝对路径
    2. 使用npm安装列在packages.json文件中的所有软件包
    3. 调用grunt
  6. 在您的Pre-或PostBuildEvents中调用此bat文件

批处理文件示例

rem use call to execute other bat files
echo npm install 
call "C:\Program Files\nodejs\npm" install

rem because we have listed grunt-cli as a dev dependency,
rem the executable will be located in the node_modules folder
echo grunt
call "./node_modules/.bin/grunt"

我很想从已经熟悉使用TFS并希望开始使用grunt但还不熟悉的人的角度了解更多信息。此外,这方面没有NuGet包吗?似乎你可以轻松地将其中大部分放入NuGet包中。 - Allen Rice
@AllenRice 在我看来,你只能在这里放置nodejs或grunt。所有其他包都是npm包。不幸的是,我没有找到grunt的nuget包,在nodejs中也没有流行的包。你可以尝试这个:https://www.nuget.org/packages/nji/ 这将使步骤1成为过去式。 - thomaux
为什么我需要在本地安装grunt-cli - Matthias
@MatthiasDailey 我这样做是为了避免路径问题。当你本地安装 grunt-cli 后,你可以在 npm_modules 下找到它。 - thomaux

2

当我必须使用TFS时,我会使用grunt。我尝试过grunt-tfs-unlock,但遇到了这个问题。我使用grunt-shell解决了这个问题,它可以很好地工作并让您更加掌控配置。这个代码片段展示了我如何使用grunt与TFS一起使用。它演示了'tf checkout'命令,但是您可以轻松地使用此模式创建任何tf命令。


2

我尝试了这里列出的所有答案,但在没有使用NCapsulate之前,无法成功地进行TFS自动构建和部署。它消除了在构建代理或开发机器上单独安装NodeJs的需要,只需一个NuGet包。

只需确保正确设置构建目标,它就能很好地工作。


1

0
在您的构建服务器上安装了Node等等之后,您还可以修改构建模板并添加一个步骤来调用Grunt等等。这样就不需要修改csproj文件,并且可以使用TFS创建的环境变量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接