我可以将Grunt与TFS一起使用吗?

时间:2013-07-01 07:11:05

标签: javascript tfs continuous-integration tfsbuild gruntjs

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

忏悔:我对TFS一无所知。

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

这可能吗?有没有人使用Grunt和TFS?

6 个答案:

答案 0 :(得分:18)

在我们目前的项目中,我们正在使用Grunt和TFS。我已经将Grunt与TFS集成在一起,它可以从一个bat文件中调用它,你可以将它挂在项目文件的Pre- or Post-BuildEvents部分。

但是,因为TFS将使用特定的环境变量执行构建,所以需要使用绝对路径。

我们已完成的事项列表

  1. 在构建计算机上(以及在您的开发计算机上)安装node.js。
  2. 在JavaScript项目的根目录中添加package.json文件。
  3. 使用npm在本地安装grunt-cli (!)。使用--save-dev标志将此包添加到package.json
  4. 中的开发依赖项部分
  5. 对于您需要的所有其他包,请使用与步骤3中相同标志的npm
  6. 写一个bat文件(参见下面的例子)
    1. 使用绝对路径
    2. 使用npm安装packages.json文件中列出的所有软件包
    3. call grunt
  7. 在Pre-或PostBuildEvents中,调用此bat文件
  8. 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"
    

答案 1 :(得分:2)

当我必须使用TFS时,我对TFS使用grunt。我尝试了grunt-tfs-unlock,但遇到了这个issue。我使用grunt-shell解决了这个问题,它起作用并让你更多地负责配置。这个gist显示了我如何使用TFS和grunt。它演示了'tf checkout'命令,但您可以使用此模式轻松创建任何tf命令。

答案 2 :(得分:2)

我尝试了此处列出的所有答案,并且无法使用TFS成功实现自动构建和部署,直到我使用NCapsulate。它消除了在构建代理或开发机器上单独安装NodeJ的需要。只是一个NuGet包。

只需确保正确设置构建目标并且效果非常好。

答案 3 :(得分:1)

您可以在构建服务器上找到有关如何使用grunt的完整示例方案: http://www.codit.eu/blog/2015/03/18/continuous-integration-with-javascript-nunit-on-tfsbuild-(part-23)/

答案 4 :(得分:0)

在构建服务器上安装节点等...后,您还可以修改构建模板并添加一个步骤来调用grunt等....这样可以防止您必须修改csproj文件并允许您使用由TFS创建的环境变量。

答案 5 :(得分:-1)

您可以使用以下步骤创建目标文件:

<exec command="npm install" WorkingDirectory="$(RootFolder)\ui-packages" ContinueOnError="WarnAndContinue"/>
<exec command="grunt dash-build" WorkingDirectory="$(RootFolder)\ui-packages" />
<exec command="rimraf node_modules" WorkingDirectory="$(RootFolder)\ui-packages" />