Ich versuche, ein MSBuild-Ziel einzurichten, npm install
als Teil des Build-Prozesses auszuführen.MSBuild einen Werkzeugpfad finden
<Target Name="EnsureNpmBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<NpmToolExe Condition="$(NpmToolExe) == '')">npm</NpmToolExe>
</PropertyGroup>
<Exec Command="$(NpmToolExe) install" />
</Target>
Wenn der Benutzer Node.js selbst installiert hat, möchte ich diese Version verwenden. Unter der Annahme, dass der Speicherort in der Umgebungsvariablen% PATH% unter Windows installiert ist, funktioniert das obige Ziel.
Der Teil, mit dem ich Probleme habe, versucht, ein Fallback zu dem npm-Tool zu verwenden, das mit Visual Studio gebündelt ist (für diejenigen in meinem Team, die keine JS-Entwicklung machen, aber das Projekt als Teil von ihre Lösung). Diese Version kann unter $(VsInstallDir)Web/External
Gründer sein.
Obwohl ich eine ItemGroup
der möglichen Standorte der npm.cmd
Datei erstellen kann, weiß ich nicht, wie man das als eine geordnete Liste nimmt und die erste Version verwendet, die existiert.
Irgendwelche Vorschläge, wie ich MSBuild ein paar Standorte suchen kann, um das Werkzeug zu finden?
Können Sie erklären (vielleicht einige Kommentare hinzufügen), wie dieser Code das erreicht, was Sie sagen? –
@PaulTurner - Fertig. :) – weir
Die umgekehrte geordnete Auswertung ist der Trick, den ich vermisste; tolles Zeug. –