Puis-je utiliser Grunt avec TFS?

Mon nouveau projet m'a besoin pour travailler avec TFS + Git.

Confession: je ne sais rien au sujet de TFS.

Je souhaite configurer une version pour mon projet JavaScript. Je veux utiliser Grunt.

Est-ce possible? Quelqu'un a-t-il utilisé Grunt avec TFS?

Sur notre projet actuel, nous utilisons Grunt et TFS. J'ai intégré Grunt avec TFS en le calant à partir d'un fichier bat que vous pouvez brancher dans la section Pré ou Post-BuildEvents de votre fichier de projet.

Cependant, comme TFS exécutera vos versions avec des variables d'environnement spécifiques, vous devez utiliser des chemins absolus.

Une liste des choses que nous avons faites

  1. Installez node.js sur votre machine de construction (ainsi que sur votre ou vos machines de développement)
  2. Ajoutez un fichier package.json à la racine de votre projet JavaScript.
  3. Utilisez npm pour installer grunt-cli localement (!). Utilisez l' --save-dev pour ajouter ce package à la section des dépendances de développement dans package.json
  4. Pour tous les autres paquets dont vous avez besoin, utilisez npm avec le même drapeau que dans l'étape 3
  5. Écrivez un fichier bat (voir l'exemple ci-dessous) dans lequel vous allez
    1. Utiliser des chemins absolus
    2. Utilisez npm pour installer tous les paquets répertoriés dans le fichier packages.json
    3. Appeler grunt
  6. Dans votre pré ou PostBuildEvents, appelez ce fichier bat

Exemple de fichier 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" 

J'utilise grunt avec TFS quand je dois utiliser TFS. J'ai essayé grunt-tfs-unlock, mais j'ai rencontré ce problème . J'ai résolu le problème en utilisant grunt-shell, qui fonctionne et vous laisse plus en charge de la configuration. Ce gist montre comment j'utilise TFS avec grunt. Il démontre la commande 'tf checkout', mais vous pouvez facilement créer n'importe quelle commande tf avec ce modèle.

J'ai essayé toutes les réponses répertoriées ici et n'a pas pu obtenir une compilation et un déploiement automatiques réussis avec TFS jusqu'à ce que j'ai utilisé NCapsulate . Il supprime le besoin de NodeJs d'être installé séparément sur les agents de construction ou les machines dev. Juste un paquet NuGet.

Assurez-vous simplement de configurer correctement vos objectifs de construction et cela fonctionne très bien.

Vous pouvez trouver un scénario d'exemple complet sur la façon d'utiliser grunt sur le serveur de construction: http://www.codit.eu/blog/2015/03/18/continuous-integration-with-javascript-nunit-on-tfsbuild- ( Partie 23) /

Après avoir installé le noeud, etc. … sur votre serveur de construction, vous pouvez également modifier votre modèle de construction et ajouter un grognement par étape, etc. Cela empêcherait d'avoir à modifier votre fichier csproj et vous permet d'utiliser les variables environnementales Créé à la place par TFS.

Vous pouvez créer un fichier cible avec les étapes ci-dessous:

 <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" />