Búsqueda de sitios web

.net - Problemas de compilación de Typescript en Appharbor


Estoy intentando hacer que TypeScript se ejecute en AppHarbor utilizando la plantilla de proyecto TypeScript HTML5.

He copiado la carpeta de destino de Typescript desde la carpeta MSBuild y la carpeta SDK en mi proyecto, localmente todo funciona, sin embargo, cuando hago push a AppHarbor obtengo el error detallado a continuación.

También me tomé la libertad de modificar el objetivo de TypeScript, cambiando la búsqueda del SDK en la carpeta de Microsoft SDK para que mire en mi carpeta de "vendors" en su lugar.

La versión del compilador de TypeScript es 0.9.1.1

El mensaje de error que recibo es el siguiente:

error MSB6006: "tsc.exe" exited with code 1

Obtengo la siguiente salida de la tarea de TypeScript en mi compilación.

CompileTypeScript:
D:\temp\bn4vn5tf.fls\input\test\..\Vendors\TypeScript\tsc.exe  --removeComments --declaration --module AMD --out ".\js\all.js" --target ES5 "app.ts"

A continuación puedes ver el error.

CompileTypeScript:
Cannot initialize ActiveScript
D:\temp\bn4vn5tf.fls\input\vendors\TypeScript\Microsoft.TypeScript.targets(72,5): error MSB6006: "tsc.exe" exited with code 1. [D:\temp\bn4vn5tf.fls\input\test\test.csproj]

He creado un gist público con la salida completa de la compilación.

https://gist.github.com/dmportella/6470465

También creé un gist para el objetivo de TypeScript para que puedas ver los cambios que hice en él.

https://gist.github.com/anonymous/6470504

Gracias de antemano

ACTUALIZACIÓN

Como sugirió Ryan, he cambiado de tsc.exe a ejecutar el archivo tsc.js con nodejs. Tuve que agregar el SDK de Typescript y los binarios de Nodejs a mi repositorio GIT (lo cual es una buena práctica de todos modos) y finalmente agregar la tarea exec requerida al archivo del proyecto de Typescript.

Lista de cosas que necesitas hacer.

  1. Añade Nodejs a tu repositorio
  2. Agrega el SDK de Typescript a tu repositorio
  3. Elimina la importación para los objetivos de TypeScript de tu proyecto
  4. Agrega la tarea exec para ejecutar tsc.js usando nodejs

Vea abajo el xml de MSBuild que estoy usando en mi proyecto.

  <!-- Target ignored as it will not work on appharbor -->
  <!--<Import Project="$(VSToolsPath)\TypeScript\Microsoft.TypeScript.targets" />-->
  <Target Name="BuildTypeScript" BeforeTargets="build">
    <Message Importance="high" Text="Running TypeScript Compiler using NodeJs" />
    <Message Importance="high" Text="..\Vendors\nodejs\node.exe ..\Vendors\TypeScript\tsc.js --removeComments --declaration --module AMD --out $(TypeScriptOutFile) --target ES5 @(TypeScriptCompile)"/>
    <Exec Command="..\Vendors\nodejs\node.exe ..\Vendors\TypeScript\tsc.js --removeComments --declaration --module AMD --out $(TypeScriptOutFile) --target ES5 @(TypeScriptCompile)"/>
  </Target>

Respuesta #1

TypeScript 0.9.1.1 requiere que esté instalado IE10 o una versión posterior. Si eso no es una opción para ti, puedes ejecutar tsc.js a través de node en su lugar.

Respuesta #2

La solución que dmportella incluyó en su respuesta también funcionó para mí, sin embargo, el objetivo de MSBuild no quería funcionar solo copiando y cambiando las rutas.

Aquí está el objetivo que funcionó para mí (por favor descarta los cambios de ruta, esa no es la parte importante):

<Target Name="BuildTypeScript" BeforeTargets="build" Outputs="%(TypeScriptCompile.Identity)">
  <Message Importance="high" Text="Running TypeScript Compiler using NodeJs" />
  <Message Importance="high" Text="..\..\Tools\nodejs\node.exe ..\..\Tools\typescript\sdk\tsc.js --removeComments --declaration --module AMD --target ES5 %(TypeScriptCompile.Identity)"/>
  <Exec Command="..\..\Tools\nodejs\node.exe ..\..\Tools\typescript\sdk\tsc.js --removeComments --declaration --module AMD --target ES5 %(TypeScriptCompile.Identity)"/>
</Target>

Artículos relacionados