有没有办法将TypeScript编译器作为Azure Git Deploy的一部分运行

时间:2013-02-14 20:31:05

标签: azure typescript azure-git-deployment

我想避免将生成的JavaScript文件添加到git源代码控制存储库中。在部署文件之前,Azure Git Deploy是否支持运行添加命令来运行构建?

5 个答案:

答案 0 :(得分:3)

是的,您可以使用custom deployment script运行任意逻辑。您需要在回购中包含所需的工具,或者最好根据需要下载它们(以避免提交二进制文件)。

答案 1 :(得分:3)

现在,您可以生成自定义部署脚本custom deployment script

然后使用以下命令编辑npm命令以使用较新的node.exe版本(0.8.2):

call "D:\Program Files (x86)\nodejs\0.8.2\node.exe" "D:\Program Files (x86)\nodejs\node_modules\npm\bin\npm-cli.js" install --production

答案 2 :(得分:2)

以防万一其他人在寻找,这就是我需要做的工作。

首先,我确保在Kudu构建服务器可以到达的位置安装TypeScript,方法是将这些行添加到deploy.cmd文件的顶部:

call npm install typescript
IF %ERRORLEVEL% NEQ 0 (
  echo Unable to install TypeScript
  goto error
)

这将TypeScript的Node可调用版本放在.\node_modules\.bin\tsc.cmd

实际执行构建的批处理文件(以各种方式可调用,但主要作为构建后事件)如下所示:

@echo off
if (%1%=="") goto settsc
cd %1%

:settsc
if exist ".\node_modules\.bin\tsc.cmd" (
    set tsc=call ".\node_modules\.bin\tsc.cmd"
    goto build
)
if exist "%ProgramFiles(x86)%\Microsoft Sdks\Typescript\0.9\tsc.exe" (
    set tsc="%ProgramFiles(x86)%\Microsoft Sdks\Typescript\0.9\tsc.exe"
    goto build
)
if exist "%ProgramFiles%\Microsoft Sdks\Typescript\0.9\tsc.exe" (
    set tsc="%ProgramFiles%\Microsoft Sdks\Typescript\0.9\tsc.exe"  
    goto build
)
echo TypeScript compiler not found
exit 999

:build
echo Building TypeScript: Payboard.Site.js (using %tsc%)
%tsc% --sourcemap --out Scripts\Payboard\Payboard.Site.js @tsbuild_Site.txt
echo Building TypeScript: Payboard Widget (using %tsc%)
%tsc% --sourcemap --out Widget\v1.0\Payboard.js @tsbuild_Widget_v10.txt
echo Building TypeScript: App\Payboard.App.js (using %tsc%)
%tsc% --sourcemap --out App\Payboard.App.js @tsbuild_App.txt

希望这有助于其他人。

答案 3 :(得分:1)

这是解决方法的另一个选项,它不需要自定义部署脚本,没有批处理文件,只对项目文件进行了很少的更改。

有关详细信息的博客文章位于http://manfredlange.blogspot.co.nz/2014/01/aspnet-mvc-typescript-azure-website-and.html。博客文章中提到的示例项目的源代码可在https://bitbucket.org/ml_agileutilities/typescript-sample获得。有一个分支可以重现问题,还有第二个分支包含解决方法。

请注意,据我所知,Microsoft正在制定正确的解决方案。在您阅读本文时,可能不再需要解决方法。

答案 4 :(得分:0)

现在可以在没有任何脚本的情况下使用Typescript。只需确保TypeScript可以在VS中运行,然后它也可以在Kudu构建中运行。请注意,您可能有TypeScript版本冲突,请参阅例如this question