azure - Durandal SPA 使用构建部署命令中的优化器部署到 Azure 网站

标签 azure deployment durandal optimization

我使用以下命令运行 Azure 命令行工具来生成下面的脚本

C:\GameDev\DevPortal>azure site deploymentscript --aspWAP "DeveloperPortal\Devel
operPortal.csproj" -s "DeveloperPortal.sln"

脚本:

@echo off

:: ----------------------
:: KUDU Deployment Script
:: ----------------------

:: Prerequisites
:: -------------

:: Verify node.js installed
where node 2>nul >nul
IF %ERRORLEVEL% NEQ 0 (
  echo Missing node.js executable, please install node.js, if already installed make sure it can be reached from current environment.
  goto error
)

:: Setup
:: -----

setlocal enabledelayedexpansion

SET ARTIFACTS=%~dp0%artifacts

IF NOT DEFINED DEPLOYMENT_SOURCE (
  SET DEPLOYMENT_SOURCE=%~dp0%.
)

IF NOT DEFINED DEPLOYMENT_TARGET (
  SET DEPLOYMENT_TARGET=%ARTIFACTS%\wwwroot
)

IF NOT DEFINED NEXT_MANIFEST_PATH (
  SET NEXT_MANIFEST_PATH=%ARTIFACTS%\manifest

  IF NOT DEFINED PREVIOUS_MANIFEST_PATH (
    SET PREVIOUS_MANIFEST_PATH=%ARTIFACTS%\manifest
  )
)

IF NOT DEFINED KUDU_SYNC_CMD (
  :: Install kudu sync
  echo Installing Kudu Sync
  call npm install kudusync -g --silent
  IF !ERRORLEVEL! NEQ 0 goto error

  :: Locally just running "kuduSync" would also work
  SET KUDU_SYNC_CMD=node "%appdata%\npm\node_modules\kuduSync\bin\kuduSync"
)
IF NOT DEFINED DEPLOYMENT_TEMP (
  SET DEPLOYMENT_TEMP=%temp%\___deployTemp%random%
  SET CLEAN_LOCAL_DEPLOYMENT_TEMP=true
)

IF DEFINED CLEAN_LOCAL_DEPLOYMENT_TEMP (
  IF EXIST "%DEPLOYMENT_TEMP%" rd /s /q "%DEPLOYMENT_TEMP%"
  mkdir "%DEPLOYMENT_TEMP%"
)

IF NOT DEFINED MSBUILD_PATH (
  SET MSBUILD_PATH=%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
)

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Deployment
:: ----------

echo Handling .NET Web Application deployment.




:: 1. Build to the temporary path
%MSBUILD_PATH% "%DEPLOYMENT_SOURCE%\DeveloperPortal\DeveloperPortal.csproj" /nologo /verbosity:m /t:Build /t:pipelinePreDeployCopyAllFilesToOneFolder /p:_PackageTempDir="%DEPLOYMENT_TEMP%";AutoParameterizationWebConfigConnectionStrings=false;Configuration=Release /p:SolutionDir="%DEPLOYMENT_SOURCE%\.\\" %SCM_BUILD_ARGS%
IF !ERRORLEVEL! NEQ 0 goto error

:: 2. Durandal Node js Optimize
echo Running Durandal Optimizer
%DEPLOYMENT_SOURCE%\DeveloperPortal\App\durandal\amd\optimizer --source %DEPLOYMENT_TEMP%\App\


:: 3. KuduSync
call %KUDU_SYNC_CMD% -v 50 -f "%DEPLOYMENT_TEMP%" -t "%DEPLOYMENT_TARGET%" -n "%NEXT_MANIFEST_PATH%" -p "%PREVIOUS_MANIFEST_PATH%" -i ".git;.hg;.deployment;deploy.cmd"
IF !ERRORLEVEL! NEQ 0 goto error




::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

goto end

:error
echo An error has occurred during web site deployment.
call :exitSetErrorLevel
call :exitFromFunction 2>nul

:exitSetErrorLevel
exit /b 1

:exitFromFunction
()

:end
echo Finished successfully.

我在部署区域中添加了步骤 2,该步骤调用优化器,我提供了源代码,因为我注意到如果不这样做,优化完成后在查找其中一个 js 文件时会出现错误。

一切运行正常,但是Azure上的网站没有更新,没有任何更改发生,我查看日志,它有以下内容:

Command: deploy.cmd
Handling .NET Web Application deployment.
  All packages listed in packages.config are already installed.
  DeveloperPortal -> C:\DWASFiles\Sites\socialplay\VirtualDirectory0\site\repository\DeveloperPortal\bin\DeveloperPortal.dll
  Transformed Web.config using C:\DWASFiles\Sites\socialplay\VirtualDirectory0\site\repository\DeveloperPortal\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.
  Copying all files to temporary location below for package/publish:
  C:\DWASFiles\Sites\socialplay\Temp\8bdcc230-a749-42d9-9b04-dfb7f84a5bf1.
Running Durandal Optimizer
Using default base configuration.
Configuring for deploy with almond (custom).
{
  "name": "durandal/amd/almond-custom",
  "inlineText": true,
  "stubModules": [
    "durandal/amd/text"
  ],
  "paths": {
    "text": "durandal/amd/text"
  },
  "baseUrl": "C:\\DWASFiles\\Sites\\socialplay\\VirtualDirectory0\\site\\repository\\DeveloperPortal\\App\\",
  "mainConfigFile": "C:\\DWASFiles\\Sites\\socialplay\\VirtualDirectory0\\site\\repository\\DeveloperPortal\\App\\main.js",
  "include": [
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/main-built",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/main",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/content/text/GamesLocalization",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/content/text/InstantiatedItemsLocalization",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/content/text/itemWizardLocalization",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/content/text/r",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/app",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/composition",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/events",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/http",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/messageBox.html",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/messageBox",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/modalDialog",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/system",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/viewEngine",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/viewLocator",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/viewModel",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/viewModelBinder",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/widget",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/plugins/router",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/durandal/transitions/entrance",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/services/dataservice",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/services/logger",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/appdetails",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/baseitems",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/classes",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/documentation",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/games",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/home",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/items",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/itemstore",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/liveexample",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/loginRegister",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/sdk",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/shell",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/tutorials",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/Instantiated/instantiated",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/ItemCreationWizard/itemCreationWizard",
    "C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/viewmodels/WorldWizard/worldWizard",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/appdetails.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/baseitems.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/classes.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/devmenu.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/documentation.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/footer.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/games.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/home.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/HomeGuest.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/items.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/itemstore.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/liveexample.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/loginRegister.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/nav.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/sdk.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/shell.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/titleBar.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/tutorials.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/Instantiated/givePlayerItem.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/Instantiated/instantiated.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/Instantiated/playerSelect.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/Instantiated/playersItems.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/baseitembehaviours.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/baseitemimage.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/baseItemname.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/baseitemproperties.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/baseitemquality.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/baseitemunity3d.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/baseitemvariations.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/classbehaviours.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/classname.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/classproperties.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/classselect.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/generateditems.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/helppage.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/ItemCreationWizard/itemCreationWizard.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/WorldWizard/worldWizard.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/WorldWizard/worldWizard_App.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/WorldWizard/worldWizard_Currency.html",
    "text!C:/DWASFiles/Sites/socialplay/VirtualDirectory0/site/repository/DeveloperPortal/App/views/WorldWizard/worldWizard_World.html"
  ],
  "exclude": [],
  "keepBuildDir": true,
  "optimize": "uglify2",
  "out": "C:\\DWASFiles\\Sites\\socialplay\\VirtualDirectory0\\site\\repository\\DeveloperPortal\\App\\main-built.js",
  "pragmas": {
    "build": true
  },
  "wrap": true,
  "insertRequire": [
    "main"
  ]
}
Deleting old output file.
 Tracing dependencies for: durandal/amd/almond-custom
 KuduSync.NET from: 'C:\DWASFiles\Sites\socialplay\Temp\8bdcc230-a749-42d9-9b04-dfb7f84a5bf1' to: 'C:\DWASFiles\Sites\socialplay\VirtualDirectory0\site\wwwroot'
Copying file: 'Web.config'
Finished successfully.

似乎没问题,但看起来 KuduSync 可能会替换 durandal 生成的文件,因此我尝试在 deploy.cmd 的步骤 2 中引用 %DEPLOYMENT_TEMP%,

:: 2. Durandal Node js Optimize

echo 运行 Durandal 优化器 %DEPLOYMENT_SOURCE%\DeveloperPortal\App\durandal\amd\optimizer --source %DEPLOYMENT_TEMP%\App\

这里最终发生的事情是 main-built.js 是空的,并且我的页面无法加载。

这就是我被困住的地方

最佳答案

空的 main-built.js 表示当 optimizer 运行 r.js 时出现问题。 我尝试使用 node r.js -o app.build.js 手动运行 r.js。查看更多信息Durandal.js optimizer not working (empty main-built.js)

关于azure - Durandal SPA 使用构建部署命令中的优化器部署到 Azure 网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17074281/

相关文章:

breeze - 如何在 SPA 中实现多语言

azure - 从命令或 API 创建 Azure AD 租户

c# - 如何在负载平衡的 Azure 虚拟机上使用 SessionState

azure - 设置 ACS Kubernetes Master 的大小

java - fx :jar in NetBeans? 在哪里 - JavaFX

asp.net - 使用 Breezejs 捕获 SaveChanges() 上的外键异常

Azure 应用服务出站请求不通过 Vnet 集成 NAT 网关路由

deployment - Docker应用程序部署

java - WebSwing 到 Tomcat 部署(Configuration)

single-page-application - 如何将 Durandal.js 配置为在同一个文件夹中拥有多个具有 View 和 View 模型的区域?