[{"data":1,"prerenderedAt":901},["ShallowReactive",2],{"article-azure-devops-file-transformation-pipeline":3},{"article":4,"tags":125,"previous":140,"next":363},{"id":5,"title":6,"author":7,"body":8,"createdAt":114,"description":115,"extension":116,"img":33,"meta":117,"navigation":118,"path":119,"seo":120,"stem":121,"tags":122,"updatedAt":114,"__hash__":124},"articles\u002Farticles\u002Fazure-devops-file-transformation-pipeline.md","Azure DevOps File Transformation Pipeline",null,{"type":9,"value":10,"toc":110},"minimark",[11,15,22,36,39,49,52,73,76,97],[12,13,14],"p",{},"Running locally via Visual Studio and JetBrains Rider and managing the ASPNETCORE_ENVIRONMENT variable has been challenging.  Changing and setting ASPNETCORE_ENVIRONMENT within launchSettings.json and\u002For within Project Properties impacts the web.{envrionment}.config files.  Without the appropriate configuration within the publish steps the site was being deployed with incorrect settings and it was time consuming to track it back to the best approach.  So for now I have a pipeline build process setup for each AppService ‘slot’ setting different BuildConfiguration within each to ensure the most appropriate web.config is deployed.",[12,16,17,18,21],{},"This is a .net core asp.net web application so why the web.config? It appears that locally during IIS Express\u002FIIS there is still a dependency on this web.config to identify the hosting model (inprocess) and reference to the exe that would be run.  This is of course when deploying to Windows infrastructure.",[19,20],"br",{},"\nProject Properties – Environment variables",[12,23,24],{},[25,26,28],"a",{"href":27},"\u002Farticles\u002Fimages\u002Fimage_637262774405512580.png",[29,30],"img",{"style":31,"title":32,"src":33,"alt":32,"width":34,"height":35},"display: inline;","image","\u002Farticles\u002Fimages\u002Fimage_thumb_637262774407471496.png",457,345,[12,37,38],{},"My launchSettings.json – you can see I can modify before running how IIS or IIS Express identifies the environment variable",[12,40,41],{},[25,42,44],{"href":43},"\u002Farticles\u002Fimages\u002Fimage_637262774409386358.png",[29,45],{"style":31,"title":32,"src":46,"alt":32,"width":47,"height":48},"\u002Farticles\u002Fimages\u002Fimage_thumb_637262774411646559.png",463,415,[12,50,51],{},"The resultant\u002Frelated web.configs looks like the following for Development and Staging environments.",[12,53,54,55,63,65,66],{},"web.config\n",[25,56,58],{"href":57},"\u002Farticles\u002Fimages\u002Fimage_637262774414383837.png",[29,59],{"style":31,"title":32,"src":60,"alt":32,"width":61,"height":62},"\u002Farticles\u002Fimages\u002Fimage_thumb_637262774416208149.png",484,113,[19,64],{},"\nweb.Staging.config (you can see the addition of the xdt:Transform=”Replace” attribute which informs publish that when building for Staging to replace this variable within web.config with this value)\n",[25,67,69],{"href":68},"\u002Farticles\u002Fimages\u002Fimage_637262774419133421.png",[29,70],{"style":31,"title":32,"src":71,"alt":32,"width":61,"height":72},"\u002Farticles\u002Fimages\u002Fimage_thumb_637262774421036401.png",117,[12,74,75],{},"By default the build process on Azure DevOps – Pipelines was ignoring any file transformation requirements.  In order to establish File Transformation on publish notice the –configuration $(BuildConfiguration)",[12,77,78,86,88,89],{},[25,79,81],{"href":80},"\u002Farticles\u002Fimages\u002Fimage_637262774423325714.png",[29,82],{"style":31,"title":32,"src":83,"alt":32,"width":84,"height":85},"\u002Farticles\u002Fimages\u002Fimage_thumb_637262774425301819.png",661,295,[19,87],{},"\nand the respective variable that is used during publish to identify the appropriate configuration to use (development\u002Fstaging etc.)\n",[25,90,92],{"href":91},"\u002Farticles\u002Fimages\u002Fimage_637262774427383207.png",[29,93],{"style":31,"title":32,"src":94,"alt":32,"width":95,"height":96},"\u002Farticles\u002Fimages\u002Fimage_thumb_637262774428896829.png",702,164,[12,98,99,100,102],{},"After the build and using App Service Editor my web.config was successfully transformed",[19,101],{},[25,103,105],{"href":104},"\u002Farticles\u002Fimages\u002Fimage_637262774431201007.png",[29,106],{"style":31,"title":32,"src":107,"alt":32,"width":108,"height":109},"\u002Farticles\u002Fimages\u002Fimage_thumb_637262774433117797.png",700,190,{"title":111,"searchDepth":112,"depth":112,"links":113},"",2,[],"2020-05-28T15:44:03.462Z","Azure DevOps. Build Pipelines and establishing build configurations when deploying to a Windows environment.  The following is quick documentation walking through the process to ensure appropriate web.config files and transforms are performing during the publish steps within your pipeline.  This is one approach used, while I believe there are still other alternatives available.","md",{},true,"\u002Farticles\u002Fazure-devops-file-transformation-pipeline",{"title":6,"description":115},"articles\u002Fazure-devops-file-transformation-pipeline",[123],"azure","lk4UjX3qvCsYs7rdaocW7xYDRc5SC2dkZpoMWRp45C4",[126],{"id":127,"title":128,"body":129,"description":133,"extension":116,"img":134,"meta":135,"name":123,"navigation":118,"path":136,"seo":137,"stem":138,"__hash__":139},"tags\u002Ftags\u002Fazure.md","Azure",{"type":9,"value":130,"toc":131},[],{"title":111,"searchDepth":112,"depth":112,"links":132},[],"Azure cloud platform is more than 200 products and cloud services designed to help you bring new solutions to life","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1598313183973-4effcded8d5e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=675&q=80",{},"\u002Ftags\u002Fazure",{"description":133},"tags\u002Fazure","m01ax_ShM5MuWl7UByoMyql_zrDRu_4udP4MyD4fL-k",{"id":141,"title":142,"author":143,"body":144,"createdAt":353,"description":354,"extension":116,"img":355,"meta":356,"navigation":118,"path":357,"seo":358,"stem":359,"tags":360,"updatedAt":353,"__hash__":362},"articles\u002Farticles\u002Fxamarin-android-platform-version-support.md","Xamarin Android - Platform Version Support","[object Object]",{"type":9,"value":145,"toc":351},[146,152,161,166,169,209,212,227,235,246,286,288,307,326,331,334,339,344,347],[12,147,148,149,151],{},"So version support and Android is confusing.  Let’s just get the straight.",[19,150],{},"\nIn writing this post I have read things over multiple times.  Do not get discouraged.  Google generally gives three names to the API levels: an API number\u002Finteger, a version number, and a candy name.",[12,153,154,155,160],{},"This is documented on their\n",[25,156,159],{"href":157,"target":158},"http:\u002F\u002Fdeveloper.android.com\u002Fabout\u002Fdashboards\u002Findex.html","_blank","platform dashboard",".  For example KitKat API 19, Version 4.4\n. While working with Xamarin Android, project properties show the following selections.  We have Compile using version, Minimum Android to target\nand Target Android version. Ugh.",[12,162,163],{},[29,164],{"alt":111,"src":165},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-xamarin-android-platform-version-suppo_db82-image_2.png",[12,167,168],{},"These values are pushed to the AndroidManifest.xml which is included in your project.",[170,171,175],"pre",{"className":172,"code":173,"language":174,"meta":111,"style":111},"language-xml shiki shiki-themes github-light github-dark","\u003C?xml version=\"1.0\" encoding=\"utf-8\"?>\n\u003Cmanifest xmlns:android=\"http:\u002F\u002Fschemas.android.com\u002Fapk\u002Fres\u002Fandroid\" android:versionCode=\"1\" android:versionName=\"1.0\" package=\"DrawerLayout_V7_Tutorial.DrawerLayout_V7_Tutorial\">  \n    \u003Cuses-sdk android:minSdkVersion=\"19\" android:targetSdkVersion=\"19\" \u002F>  \n    \u003Capplication android:label=\"DrawerLayout_V7_Tutorial\">\u003C\u002Fapplication>  \n\u003C\u002Fmanifest>\n","xml",[176,177,178,186,191,197,203],"code",{"__ignoreMap":111},[179,180,183],"span",{"class":181,"line":182},"line",1,[179,184,185],{},"\u003C?xml version=\"1.0\" encoding=\"utf-8\"?>\n",[179,187,188],{"class":181,"line":112},[179,189,190],{},"\u003Cmanifest xmlns:android=\"http:\u002F\u002Fschemas.android.com\u002Fapk\u002Fres\u002Fandroid\" android:versionCode=\"1\" android:versionName=\"1.0\" package=\"DrawerLayout_V7_Tutorial.DrawerLayout_V7_Tutorial\">  \n",[179,192,194],{"class":181,"line":193},3,[179,195,196],{},"    \u003Cuses-sdk android:minSdkVersion=\"19\" android:targetSdkVersion=\"19\" \u002F>  \n",[179,198,200],{"class":181,"line":199},4,[179,201,202],{},"    \u003Capplication android:label=\"DrawerLayout_V7_Tutorial\">\u003C\u002Fapplication>  \n",[179,204,206],{"class":181,"line":205},5,[179,207,208],{},"\u003C\u002Fmanifest>\n",[12,210,211],{},"While the latest versions of Android often provide great APIs for your app, you should\u002Fneed to continue to support older versions of Android until devices\nget updated.",[12,213,214,215,218,219,221,222,226],{},"The Android ",[25,216,217],{"href":157,"target":158},"Platform Versions"," page\nhas details of version and respective codename\u002FAPI level.  Also of interest is the distribution % for each version.  At the time of this post,\ninterestingly KitKat version 4.4 (API 19) has the largest distribution.",[19,220],{},"\nIn order to use several recent platform API’s on an older version device\u002Fplatform Android\u002FXamarin provide what is called\n",[25,223,225],{"href":224,"target":158},"https:\u002F\u002Fdeveloper.android.com\u002Ftools\u002Fsupport-library\u002Findex.html","support libraries",".",[12,228,229,230,234],{},"The Android Support Library package is a ",[231,232,233],"strong",{},"set of code libraries that provide backward-compatible versions of Android framework APIs","\nas well as features that are only available through the library APIs.  Each support library is backward-compatible to a specific Android API level.",[12,236,237,238,240,241,245],{},"This means that your application can use the libraries features and still be compatible with devices running older API levels.  These support libraries are included in your project and help your application run efficiently on older platforms.  Support Libraries each target a base Android API level and each provides a different set of features. In order to effectively use the libraries, it is important to consider what features you want to support and understand what features are\nsupported by each library at what Android API level.",[19,239],{},"\nBased on Android ",[25,242,244],{"href":243,"target":158},"https:\u002F\u002Fdeveloper.android.com\u002Ftools\u002Fsupport-library\u002Ffeatures.html","Support Library Features","  -",[12,247,248,252,258,261,267,270,272,273,276,277,279,282],{},[249,250,251],"em",{},"In general, we recommend including the ",[25,253,255],{"href":254},"https:\u002F\u002Fdeveloper.android.com\u002Ftools\u002Fsupport-library\u002Ffeatures.html#v4",[249,256,257],{},"v4 support",[249,259,260],{}," and ",[25,262,264],{"href":263},"https:\u002F\u002Fdeveloper.android.com\u002Ftools\u002Fsupport-library\u002Ffeatures.html#v7-appcompat",[249,265,266],{},"v7 appcompat",[249,268,269],{}," libraries, because they support a wide range of Android versions and provide APIs for recommended user interface patterns.",[19,271],{},"\nIn a recent blog post I am working with ActionBars and Toolbars.  I can ",[25,274,275],{"href":243,"target":158},"see"," v7 appcompat library adds support for the ActionBar user interface design patter.  v7 appcompat also includes support for material design implementations.  Now looking at the Toolbar is implemented in API level 21 or higher.  I do want my code to run on KitKat (version 4.4) API level 19.  Toolbar minimum is API 21 which is version 5 (Lollipop).  So how do I setup my above minSdkVersion and targetSdkVersion?",[19,278],{},[231,280,281],{},"Compile using Android version: ",[283,284,285],"u",{},"Set to the version that has all the features you need.",[283,287],{},[12,289,290,292,295,296,299,300,303,306],{},[283,291],{},[231,293,294],{},"Minimum Android to Target – ","android:minSdkVersion : Specifies the minimum API Level on which the application is able to ",[231,297,298],{},"run",". The default value is \"1\".  Note: the Android system will prevent the user from installing the application if the system's API Level is lower than the value specified in this attribute.  ",[283,301,302],{},"Set to the lowest version you want to support.\n",[231,304,305],{},"\nTarget Android version ","- android:targetSdkVersion :",[12,308,309,310,314,315,318,322,323],{},"To allow your app to take advantage of these changes and ensure that your app fits the\nstyle of each user's device, you should set the ",[25,311,313],{"href":312},"https:\u002F\u002Fdeveloper.android.com\u002Fguide\u002Ftopics\u002Fmanifest\u002Fuses-sdk-element.html#target","targetSdkVersion"," value to match the latest Android version available (If not set, the default value equals that given to minSdkVersion).  This attribute informs the system that you have tested against the target version and the system should not enable any compatibility behaviors to maintain your app's forward-compatibility with the target version. The application is still able to run on older versions (down to minSdkVersion).  This does get a little confusing but bottom line ",[249,316,317],{},"To maintain your application along with each Android release, you should increase the value of this attribute to match the latest API level, then thoroughly test your application on the corresponding platform version.  ",[25,319,321],{"href":320,"target":158},"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F4568267\u002Fandroid-min-sdk-version-vs-target-sdk-version\u002F4994039#","Stack Overflow had a good definition",":  With this attribute set, the application says that it is able to run on older versions (down to minSdkVersion), but was explicitly tested to work with the version specified here. Specifying this target version allows the platform to disable compatibility settings that are not required for the target version (which may otherwise be turned on in order to maintain forward-compatibility) or enable newer features that are not available to older applications. This does not mean that you can program different features for different versions of the platform—it simply informs the platform that you have tested against the target version and the platform should not perform any extra work to maintain forward-compatibility with the target version. ",[283,324,325],{},"Set to Use Compile using SDK version.",[12,327,328],{},[29,329],{"alt":111,"src":330},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-xamarin-android-platform-version-suppo_db82-image_4.png",[12,332,333],{},"Note: In Xamarin Studio the above choices appear slightly different.  Within XS, Project Options – General shows Target framework, then also Project Options – Android Application (2nd screenshot below)",[12,335,336],{},[29,337],{"alt":111,"src":338},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-xamarin-android-platform-version-suppo_db82-image_6.png",[12,340,341],{},[29,342],{"alt":111,"src":343},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-xamarin-android-platform-version-suppo_db82-image_8.png",[12,345,346],{},"Target framework: Compile using Android version\nMinimum Android version: is the same as Minimum Android to target\nTarget Android version:is the same as Target Android version",[348,349,350],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":111,"searchDepth":112,"depth":112,"links":352},[],"2020-06-11T20:28:49.852Z","Version support and Android is confusing.","\u002Farticles\u002Fimages\u002Fwindows-live-writer-xamarin-android-platform-version-suppo_db82-image_thumb.png",{},"\u002Farticles\u002Fxamarin-android-platform-version-support",{"title":142,"description":354},"articles\u002Fxamarin-android-platform-version-support",[361],"xamarin","lGFnwKJcW4IOUUQJPuEloQRzzxk8T48RzHX_sw9r3kc",{"id":364,"title":365,"author":7,"body":366,"createdAt":892,"description":893,"extension":116,"img":384,"meta":894,"navigation":118,"path":895,"seo":896,"stem":897,"tags":898,"updatedAt":892,"__hash__":900},"articles\u002Farticles\u002Fpath-to-resources-javascript-images-etc-not-found-with-vuejs-build.md","Path to Resources (JavaScript, Images etc.) Not Found with Vue.js Build",{"type":9,"value":367,"toc":890},[368,374,377,387,390,834,844,854,864,870,884,887],[12,369,370,371,373],{},"Using @vue\u002Fcli 4.3.1",[19,372],{},"\nWith minimal changes to code\u002Fsolution I found that resources (path to files) was not found after performing npm run build.  I was hoping to just run the newly built web application in the client side browser from File Explorer.  I ran the page and saw an empty screen.  So what was the issue and resolution?",[12,375,376],{},"The issue (visible within the screen capture – white screen and ERR_FILE_NOT_FOUND error message from the Chrome Debugger – Network Tools)",[12,378,379],{},[25,380,382],{"href":381},"\u002Farticles\u002Fimages\u002Fimage_637255046941289166.png",[29,383],{"style":31,"title":32,"src":384,"alt":32,"width":385,"height":386},"\u002Farticles\u002Fimages\u002Fimage_thumb_637255046943290619.png",1124,286,[12,388,389],{},"Doing a view source the problem started to surface.  You can see below the path was relative to the root directory.  While running from File Explorer this must be relative path.",[170,391,395],{"className":392,"code":393,"language":394,"meta":111,"style":111},"language-html shiki shiki-themes github-light github-dark","\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n    \u003Chead>\n        \u003Cmeta charset=\"utf-8\">\n        \u003Cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n        \u003Cmeta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n        \u003Clink rel=\"icon\" href=\"\u002Ffavicon.ico\">\u003Ctitle>Cargo\u003C\u002Ftitle>\n        \u003Clink href=\"\u002Fjs\u002Fcargo.js\" rel=\"preload\" as=\"script\">\n        \u003Clink href=\"\u002Fjs\u002Fchunk-common\u003C\u002Fstrong>.js\" rel=\"preload\" as=\"script\">\n        \u003Clink href=\"\u002Fjs\u002Fchunk-vendors.js\" rel=\"preload\" as=\"script\">\n    \u003C\u002Fhead>\n    \u003Cbody>\n        \u003Cnoscript>\n        \u003Cstrong>We're sorry but Cargo doesn't work properly \n        without JavaScript enabled. \n        Please enable it to continue.\u003C\u002Fstrong>\n        \u003C\u002Fnoscript>\n        \u003Cdiv id=\"app\">\u003C\u002Fdiv>\n        \u003C!-- built files will be auto injected -->\n        \u003Cscript type=\"text\u002Fjavascript\" src=\"\u002Fjs\u002Fchunk-vendors.js\">\u003C\u002Fscript>\n        \u003Cscript type=\"text\u002Fjavascript\" src=\"\u002Fjs\u002Fchunk-common.js\">\u003C\u002Fscript>\n        \u003Cscript type=\"text\u002Fjavascript\" src=\"\u002Fjs\u002Fcargo.js\">\u003C\u002Fscript>\n    \u003C\u002Fbody>\n\u003C\u002Fhtml>\n","html",[176,396,397,414,433,443,461,485,509,546,577,611,639,649,659,669,679,685,695,705,728,735,764,790,815,824],{"__ignoreMap":111},[179,398,399,403,407,411],{"class":181,"line":182},[179,400,402],{"class":401},"sVt8B","\u003C!",[179,404,406],{"class":405},"s9eBZ","DOCTYPE",[179,408,410],{"class":409},"sScJk"," html",[179,412,413],{"class":401},">\n",[179,415,416,419,421,424,427,431],{"class":181,"line":112},[179,417,418],{"class":401},"\u003C",[179,420,394],{"class":405},[179,422,423],{"class":409}," lang",[179,425,426],{"class":401},"=",[179,428,430],{"class":429},"sZZnC","\"en\"",[179,432,413],{"class":401},[179,434,435,438,441],{"class":181,"line":193},[179,436,437],{"class":401},"    \u003C",[179,439,440],{"class":405},"head",[179,442,413],{"class":401},[179,444,445,448,451,454,456,459],{"class":181,"line":199},[179,446,447],{"class":401},"        \u003C",[179,449,450],{"class":405},"meta",[179,452,453],{"class":409}," charset",[179,455,426],{"class":401},[179,457,458],{"class":429},"\"utf-8\"",[179,460,413],{"class":401},[179,462,463,465,467,470,472,475,478,480,483],{"class":181,"line":205},[179,464,447],{"class":401},[179,466,450],{"class":405},[179,468,469],{"class":409}," http-equiv",[179,471,426],{"class":401},[179,473,474],{"class":429},"\"X-UA-Compatible\"",[179,476,477],{"class":409}," content",[179,479,426],{"class":401},[179,481,482],{"class":429},"\"IE=edge\"",[179,484,413],{"class":401},[179,486,488,490,492,495,497,500,502,504,507],{"class":181,"line":487},6,[179,489,447],{"class":401},[179,491,450],{"class":405},[179,493,494],{"class":409}," name",[179,496,426],{"class":401},[179,498,499],{"class":429},"\"viewport\"",[179,501,477],{"class":409},[179,503,426],{"class":401},[179,505,506],{"class":429},"\"width=device-width,initial-scale=1.0\"",[179,508,413],{"class":401},[179,510,512,514,517,520,522,525,528,530,533,536,539,542,544],{"class":181,"line":511},7,[179,513,447],{"class":401},[179,515,516],{"class":405},"link",[179,518,519],{"class":409}," rel",[179,521,426],{"class":401},[179,523,524],{"class":429},"\"icon\"",[179,526,527],{"class":409}," href",[179,529,426],{"class":401},[179,531,532],{"class":429},"\"\u002Ffavicon.ico\"",[179,534,535],{"class":401},">\u003C",[179,537,538],{"class":405},"title",[179,540,541],{"class":401},">Cargo\u003C\u002F",[179,543,538],{"class":405},[179,545,413],{"class":401},[179,547,549,551,553,555,557,560,562,564,567,570,572,575],{"class":181,"line":548},8,[179,550,447],{"class":401},[179,552,516],{"class":405},[179,554,527],{"class":409},[179,556,426],{"class":401},[179,558,559],{"class":429},"\"\u002Fjs\u002Fcargo.js\"",[179,561,519],{"class":409},[179,563,426],{"class":401},[179,565,566],{"class":429},"\"preload\"",[179,568,569],{"class":409}," as",[179,571,426],{"class":401},[179,573,574],{"class":429},"\"script\"",[179,576,413],{"class":401},[179,578,580,582,584,586,588,591,594,597,599,601,603,605,607,609],{"class":181,"line":579},9,[179,581,447],{"class":401},[179,583,516],{"class":405},[179,585,527],{"class":409},[179,587,426],{"class":401},[179,589,590],{"class":429},"\"\u002Fjs\u002Fchunk-common",[179,592,418],{"class":593},"s7hpK",[179,595,596],{"class":429},"\u002Fstrong>.js\"",[179,598,519],{"class":409},[179,600,426],{"class":401},[179,602,566],{"class":429},[179,604,569],{"class":409},[179,606,426],{"class":401},[179,608,574],{"class":429},[179,610,413],{"class":401},[179,612,614,616,618,620,622,625,627,629,631,633,635,637],{"class":181,"line":613},10,[179,615,447],{"class":401},[179,617,516],{"class":405},[179,619,527],{"class":409},[179,621,426],{"class":401},[179,623,624],{"class":429},"\"\u002Fjs\u002Fchunk-vendors.js\"",[179,626,519],{"class":409},[179,628,426],{"class":401},[179,630,566],{"class":429},[179,632,569],{"class":409},[179,634,426],{"class":401},[179,636,574],{"class":429},[179,638,413],{"class":401},[179,640,642,645,647],{"class":181,"line":641},11,[179,643,644],{"class":401},"    \u003C\u002F",[179,646,440],{"class":405},[179,648,413],{"class":401},[179,650,652,654,657],{"class":181,"line":651},12,[179,653,437],{"class":401},[179,655,656],{"class":405},"body",[179,658,413],{"class":401},[179,660,662,664,667],{"class":181,"line":661},13,[179,663,447],{"class":401},[179,665,666],{"class":405},"noscript",[179,668,413],{"class":401},[179,670,672,674,676],{"class":181,"line":671},14,[179,673,447],{"class":401},[179,675,231],{"class":405},[179,677,678],{"class":401},">We're sorry but Cargo doesn't work properly \n",[179,680,682],{"class":181,"line":681},15,[179,683,684],{"class":401},"        without JavaScript enabled. \n",[179,686,688,691,693],{"class":181,"line":687},16,[179,689,690],{"class":401},"        Please enable it to continue.\u003C\u002F",[179,692,231],{"class":405},[179,694,413],{"class":401},[179,696,698,701,703],{"class":181,"line":697},17,[179,699,700],{"class":401},"        \u003C\u002F",[179,702,666],{"class":405},[179,704,413],{"class":401},[179,706,708,710,713,716,718,721,724,726],{"class":181,"line":707},18,[179,709,447],{"class":401},[179,711,712],{"class":405},"div",[179,714,715],{"class":409}," id",[179,717,426],{"class":401},[179,719,720],{"class":429},"\"app\"",[179,722,723],{"class":401},">\u003C\u002F",[179,725,712],{"class":405},[179,727,413],{"class":401},[179,729,731],{"class":181,"line":730},19,[179,732,734],{"class":733},"sJ8bj","        \u003C!-- built files will be auto injected -->\n",[179,736,738,740,743,746,748,751,754,756,758,760,762],{"class":181,"line":737},20,[179,739,447],{"class":401},[179,741,742],{"class":405},"script",[179,744,745],{"class":409}," type",[179,747,426],{"class":401},[179,749,750],{"class":429},"\"text\u002Fjavascript\"",[179,752,753],{"class":409}," src",[179,755,426],{"class":401},[179,757,624],{"class":429},[179,759,723],{"class":401},[179,761,742],{"class":405},[179,763,413],{"class":401},[179,765,767,769,771,773,775,777,779,781,784,786,788],{"class":181,"line":766},21,[179,768,447],{"class":401},[179,770,742],{"class":405},[179,772,745],{"class":409},[179,774,426],{"class":401},[179,776,750],{"class":429},[179,778,753],{"class":409},[179,780,426],{"class":401},[179,782,783],{"class":429},"\"\u002Fjs\u002Fchunk-common.js\"",[179,785,723],{"class":401},[179,787,742],{"class":405},[179,789,413],{"class":401},[179,791,793,795,797,799,801,803,805,807,809,811,813],{"class":181,"line":792},22,[179,794,447],{"class":401},[179,796,742],{"class":405},[179,798,745],{"class":409},[179,800,426],{"class":401},[179,802,750],{"class":429},[179,804,753],{"class":409},[179,806,426],{"class":401},[179,808,559],{"class":429},[179,810,723],{"class":401},[179,812,742],{"class":405},[179,814,413],{"class":401},[179,816,818,820,822],{"class":181,"line":817},23,[179,819,644],{"class":401},[179,821,656],{"class":405},[179,823,413],{"class":401},[179,825,827,830,832],{"class":181,"line":826},24,[179,828,829],{"class":401},"\u003C\u002F",[179,831,394],{"class":405},[179,833,413],{"class":401},[12,835,836,837,840,841],{},"The ",[231,838,839],{},"resolution"," while difficult to find, was easy to implement.  Opening up my vue.config.js I simply referenced the publicPath with a vlaue of  ",[231,842,843],{},"publicPath: '.\u002F'",[12,845,846],{},[25,847,849],{"href":848},"\u002Farticles\u002Fimages\u002Fimage_637255046945239780.png",[29,850],{"style":31,"title":32,"src":851,"alt":32,"width":852,"height":853},"\u002Farticles\u002Fimages\u002Fimage_thumb_637255046947319889.png",567,375,[12,855,856,857,863],{},"Finding the ",[25,858,862],{"href":859,"target":158,"rel":860},"https:\u002F\u002Fcli.vuejs.org\u002Fconfig\u002F#vue-config-js",[861],"noopener","documentation",", the default value is ‘\u002F’ which is what I was finding. ",[12,865,866,867],{},"The base URL your application bundle will be deployed at (known as baseUrl before Vue CLI 3.3). ",[231,868,869],{},"This is the equivalent of webpack's output.publicPath, but Vue CLI also needs this value for other purposes, so you should always use publicPath instead of modifying webpack output.publicPath.",[12,871,872,873,878,879,883],{},"By default, Vue CLI assumes your app will be deployed at the root of a domain, e.g. ",[25,874,875],{"href":875,"rel":876},"https:\u002F\u002Fwww.my-app.com\u002F",[877],"nofollow",". If your app is deployed at a sub-path, you will need to specify that sub-path using this option. For example, if your app is deployed at ",[25,880,881],{"href":881,"rel":882},"https:\u002F\u002Fwww.foobar.com\u002Fmy-app\u002F",[877],", set publicPath to '\u002Fmy-app\u002F'.",[12,885,886],{},"The value can also be set to an empty string ('') or a relative path (.\u002F) so that all assets are linked using relative paths. This allows the built bundle to be deployed under any public path, or used in a file system based environment like a Cordova hybrid app.",[348,888,889],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":111,"searchDepth":112,"depth":112,"links":891},[],"2020-05-19T17:04:54.881Z","Resources not found with vue cli build",{},"\u002Farticles\u002Fpath-to-resources-javascript-images-etc-not-found-with-vuejs-build",{"title":365,"description":893},"articles\u002Fpath-to-resources-javascript-images-etc-not-found-with-vuejs-build",[899],"vuejs","ccEvdVv8lVqOsfxnu_npwblWarxJcuJEuUnc3xPa8Zk",1781574763028]