我的新项目需要我使用TFS + Git。
忏悔:我对TFS一无所知。
我想为我的JavaScript项目设置构建。我想用Grunt。
这可能吗?有没有人使用Grunt和TFS?
答案 0 :(得分:18)
在我们目前的项目中,我们正在使用Grunt和TFS。我已经将Grunt与TFS集成在一起,它可以从一个bat文件中调用它,你可以将它挂在项目文件的Pre- or Post-BuildEvents部分。
但是,因为TFS将使用特定的环境变量执行构建,所以需要使用绝对路径。
我们已完成的事项列表
package.json
文件。npm
在本地安装grunt-cli
(!)。使用--save-dev
标志将此包添加到package.json
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" />