anchor.diff:  SET MSBUILD_PATH=%ProgramFiles(x86)%\MSBuild\14.0\Bin\MSBuild.exe
   :MsbuildPathDefined
   
  -:: Node set-up
  +REM Node set-up
   SET NPM_CMD=npm
   SET NODE_EXE=node
   echo Node version
  
positive.code: echo NPM version
  call :ExecuteCmd %NPM_CMD% -v
  
  :: Excluding files from syncing
  :: Default list by KuduSync (deploy related files)
  SET IGNORE_DEPLOY_FILES=.git;.hg;.deployment;deploy.cmd
  :: Extended list, with our specific content that must not be copied into wwwroot
  :: note: Excluding additional things, like Tests folder, on production/live
  SET IGNORE_LIST=%IGNORE_DEPLOY_FILES%;.gitignore
  IF "%CHANNEL%" EQU "live" (
    SET IGNORE_LIST=%IGNORE_LIST%;Tests
  )
  
  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  :: Building
  :: ----------
  :: 0. Detect if a webapp rebuild is needed: Is it enabled and app package.json has changed?
  :: By default, build is 0, like if AUTO_WEBAPP_BUILD had value "OFF" (or any unsupported value)
  SET DO_WEBAPP_BUILD=0
  SET DEPLOY_META_LAST_PACKAGE_JSON=%DEPLOYMENT_SOURCE%\..\deployments\last-app-package.json
  SET DEPLOY_META_CURRENT_PACKAGE_JSON=%DEPLOYMENT_SOURCE%\app\package.json
  :: NOTE: we have a env var to set this building OFF/ON/DETECT, as we usually set-it as ON (ever rebuild) at
  :: dev channel/others since we don't update app version on changes there (could get triggered by other changes, usually modules or task set-up),
  :: while on live/production we ever must update the version at the app/package.json by rule, so we are in 'DETECT' mode letting us to have 
  :: faster updates when no webapp build needed.
  IF /I "%AUTO_WEBAPP_BUILD%" EQU "ON" SET DO_WEBAPP_BUILD=1
  IF /I "%AUTO_WEBAPP_BUILD%" EQU "DETECT" (
  	:: Compare files with FC
  	:: FC returned program codes:
  	:: 1 means: there are differences between both files
  	:: 0 means: no differences
  	:: 2 means file not found
  	:: -1 means: invalid syntax
  	:: It is weird, but FC command doesn't set the ERRORLEVEL variable but the special code (used in IF without %_%)
  	:: that has ever a greater-than comparision (see https://ss64.com/nt/errorlevel.html)
  	call fc /LB1 "%DEPLOY_META_CURRENT_PACKAGE_JSON%" "%DEPLOY_META_LAST_PACKAGE_JSON%" 2>NUL >NUL
  	IF ERRORLEVEL 1 SET DO_WEBAPP_BUILD=1
  	:: no file (first time) or differences, request build!
  	:: after success build, we will copy the file so it becomes the new 'last' one
  )
  
  IF %DO_WEBAPP_BUILD% EQU 0 goto AfterWebappBuild
  
  :: 1. Build Webapp
  echo Prepare environment to build WebApp
  :: .a Install Yarn
  echo Install Yarn if unavailable
  SET YARN_PATH=%DEPLOYMENT_SOURCE%\node_modules\yarn\bin\yarn.cmd
  IF NOT EXIST %YARN_PATH% (
  
negative.code: @if "%SCM_TRACE_LEVEL%" NEQ "4" @echo off
  
  REM ----------------------
  REM KUDU Deployment Script
  REM Version: 1.0.17
  REM ----------------------
  
  REM Prerequisites
  REM -------------
  
  REM 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
  )
  
  REM Setup
  REM -----
  
  setlocal enabledelayedexpansion
  
  