【问题标题】:Is there a way to run the TypeScript compiler as part of the Azure Git Deploy有没有办法将 TypeScript 编译器作为 Azure Git 部署的一部分运行
【发布时间】:2013-01-30 18:23:57
【问题描述】:

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

【问题讨论】:

    标签: azure typescript azure-git-deployment


    【解决方案1】:

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

    【讨论】:

    • 我试过了,但似乎从 azure 站点工具生成的自定义部署脚本忽略了 package.json 中的节点引擎规范。我需要升级到 8.x 以支持 TypeScript 编译器。
    • 嗯,我认为不应该是这样。我们需要查看一个 repro 存储库才能理解它。
    • 其实你是对的,今天不行,但很快就会:)
    • 太好了,“很快”是指 Azure 网站的新版本、“天蓝色站点”工具还是只是一个后端修复?
    • 或者,如果你可以发布魔法命令来扫描和更新引擎 - 那也可以:-)
    【解决方案2】:

    现在您可以生成自定义部署脚本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

    【讨论】:

    • 好的,我通过为 npm 和 tsc 编译器显式调用此版本的节点来使其工作。 TS 模块已安装到 %appdata%\npm\node_modules\typescript。
    • 随着 azure-cli 的更新,您现在可以按照 David 的描述生成自定义部署脚本,并且 %NODE_EXE% 环境变量将根据 package.json 文件包含正确的 node.exe 版本(以及Azure 上可用的内容)。
    【解决方案3】:

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

    首先,我通过在我的deploy.cmd 文件顶部的某处添加这些行来确保将 TypeScript 安装在 Kudu 构建服务器可以访问的位置:

    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
    

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

    【讨论】:

      【解决方案4】:

      这是另一种解决方法,不需要自定义部署脚本,不需要批处理文件,只需对项目文件进行少量更改。

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2021-02-16
          • 2021-10-11
          • 2021-02-05
          • 1970-01-01
          • 2022-07-29
          • 1970-01-01
          • 2016-06-15
          • 2010-09-09
          • 2017-05-07
          相关资源
          最近更新 更多