问题
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
- Install node.js on your build machine (as well as on your development machine(s) ofcourse)
- Add a
package.json
file on the root of your JavaScript project. - Use
npm
to installgrunt-cli
locally (!). Use the--save-dev
flag to add this package to the development dependencies section inpackage.json
- For all other packages you need, use npm with the same flag as in step 3
- Write a bat file (see example below) in which you'll
- make use of absolute paths
- use npm to install all the packages listed in the packages.json file
- call grunt
- 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