Итак, у меня был точно такой же вопрос, но для React App (я думаю, что для angular это очень похоже). Я потратил последние 2 часа на расследование того, как все работает под капотом, и я все еще не совсем уверен, прав ли я, но вот что я узнал:
Разработка
spa.UseReactDevelopmentServer(npmScript: "start");
- Этот метод запускает npmScript с именем
start
- его можно найти в файле package.json
в разделе scripts
. Этот скрипт запускает WebPackDevServer , который выполняет конвейер веб-пакетов в памяти, а затем подает сгенерированные файлы также из памяти (он позволяет быстро перезагружать файлы в браузере и без перекомпоновки приложения, которое отлично подходит для разработки).
Конвейер Webpack генерирует необходимые сценарии js & css, вставляет ссылки на эти файлы в index.html, а затем копирует все необходимые файлы в указанную директорию (или в данном случае в память;))
- Он настраивает прокси на этом сервере, поэтому ASP передает все запросы на этот сервер, и в конечном итоге ваши файлы просто отправляются из памяти.
Вы также можете запустить этот сервер прямо из консоли и дать ASP команду настроить прокси на существующий сервер без запуска сценария npm. Это может быть достигнуто с помощью метода UseProxyToSpaDevelopmentServer
.
Производство
В случае производственной сборки сервер не используется (и не должен использоваться). Должен быть вызван сценарий build
(шаг PublishRunWebpack
, который вы можете найти в файле csproj
), который запустит аналогичный конвейер, который выдаст минимизированные файлы и соответствующий index.html в указанную папку. Затем эти файлы будут обслуживаться напрямую с жесткого диска благодаря конфигурации AddSpaStaticFiles
.
По крайней мере, это мое нынешнее понимание этого процесса.