Can I use Grunt with TFS?

梦想与她 提交于 2019-12-29 15:03:12

问题


My new project needs me to work with TFS + Git.

Confession: I know nothing about TFS.

I want to setup a build for my JavaScript project. I want to use Grunt.

Is this possible? Has anybody used Grunt with TFS?


回答1:


On our current project, we're using Grunt and TFS. I've integrated Grunt with TFS by caling it from a bat file which you can hook up in the Pre- or Post-BuildEvents section of your project file.

However, because TFS will execute your builds with specific environment variables, you need to use absolute paths.

A list of the things we've done

  1. Install node.js on your build machine (as well as on your development machine(s) ofcourse)
  2. Add a package.jsonfile on the root of your JavaScript project.
  3. Use npm to install grunt-cli locally (!). Use the --save-dev flag to add this package to the development dependencies section in package.json
  4. For all other packages you need, use npm with the same flag as in step 3
  5. Write a bat file (see example below) in which you'll
    1. make use of absolute paths
    2. use npm to install all the packages listed in the packages.json file
    3. call grunt
  6. In your Pre- or PostBuildEvents, call this bat file

bat file example

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"



回答2:


I use grunt with TFS when I have to use TFS. I've tried grunt-tfs-unlock, but ran into this issue. I solved the problem using grunt-shell, which works and leaves you more in charge of the configuration. This gist shows how I use TFS with grunt. It demonstrates the 'tf checkout' command, but you could easily create any tf command with this pattern.




回答3:


I tried all the answers listed here and wasn't able to get a successful automated build and deploy with TFS until I used NCapsulate. It removes the need for NodeJs to be installed separately on build agents or dev machines. Just a NuGet package.

Just make sure you set up your build targets properly and it works very well.




回答4:


You can find a full example scenario on how to use grunt on the build server: http://www.codit.eu/blog/2015/03/18/continuous-integration-with-javascript-nunit-on-tfsbuild-(part-23)/




回答5:


After installing node etc... on your build server, you could also modify your build template and add a step to call grunt etc.... This would prevent you from having to modify your csproj file and allow you to use the environmental variables created by TFS instead.



来源:https://stackoverflow.com/questions/17399116/can-i-use-grunt-with-tfs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!