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

有没有办法作为Azure Git部署的一部分运行TypeScript编译器,azure,typescript,azure-git-deployment,Azure,Typescript,Azure Git Deployment,我希望避免将生成的JavaScript文件添加到git源代码管理存储库中。Azure Git Deploy是否支持在部署文件之前运行添加命令以运行构建?是的,您可以使用。您需要在repo中包含所需的工具,或者最好根据需要下载它们(以避免提交二进制文件)。现在您可以生成自定义部署脚本 然后使用以下命令编辑npm命令以使用较新的node.exe版本(0.8.2): 调用“D:\Program Files(x86)\nodejs\0.8.2\node.exe”“D:\Program Files(x86

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

是的,您可以使用。您需要在repo中包含所需的工具,或者最好根据需要下载它们(以避免提交二进制文件)。

现在您可以生成自定义部署脚本

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


调用“D:\Program Files(x86)\nodejs\0.8.2\node.exe”“D:\Program Files(x86)\nodejs\node\u modules\npm\bin\npm cli.js”安装--production

以防万一有人在看,这就是我需要做的事情来让它正常工作

首先,通过在我的
deploy.cmd
文件顶部添加以下行,确保TypeScript安装在Kudu build server可以访问的位置:

call npm install typescript
IF %ERRORLEVEL% NEQ 0 (
  echo Unable to install TypeScript
  goto error
)
这会将TypeScript的节点可调用版本放置在
\Node\u 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

希望这对其他人有所帮助。

这里是另一个解决方案选项,它不需要自定义部署脚本,不需要批处理文件,只需要对项目文件进行最小的更改

有关详细信息的博客文章,请访问。博客文章中提到的示例项目的源代码可从以下站点获得。有一个分支复制问题,还有第二个分支包含解决方法


请注意,据我所知,微软正在研究一个合适的解决方案。在阅读本文时,可能不再需要解决方法。

现在无需任何脚本即可使用Typescript。只要确保TypeScript在VS中工作,那么它在Kudu构建中也会工作。请注意,您可能会遇到TypeScript版本冲突,请参见,例如…

我尝试过这样做,但从azure站点工具生成的自定义部署脚本似乎忽略了package.json中的节点引擎规范。我需要升级到8.x以支持TypeScript编译器。Hmmm,我认为情况不应该是这样。我们需要看看repo存储库来理解它。事实上,你是对的,它今天不起作用,但很快就会起作用:)太好了,“很快就会”是指新发布的Azure网站、“Azure站点”工具还是只是一个后端修复程序?或者,如果你可以发布神奇的命令来扫描和更新引擎-那也会起作用:-)好的,我通过显式地为npm和tsc编译器调用这个版本的node来实现它。TS模块已安装到%appdata%\npm\node\u modules\typescript中。随着azure cli的更新,您现在可以按照David所述生成自定义部署脚本,%node\u EXE%环境变量将根据package.json文件(以及azure上的可用内容)包含正确的node.EXE版本。