В чем разница между параметрами --base-href и --deploy-url инструмента angular-cli

89

Документация Angular сообщает, что я должен использовать --base-hrefпараметр в сборке приложения Angular для производства, когда оно будет развернуто во вложенной папке сервера:

Если вы копируете файлы в подпапку сервера, добавьте флаг сборки --base-hrefи установите <base href>соответствующий параметр.

Например, если index.htmlнаходится на сервере по адресу /my/app/index.html, установите базовый href <base href="https://stackoverflow.com/my/app/">как это.

https://angular.io/guide/deployment

Однако у angular-cli есть --deploy-urlпараметр. В документации к инструменту он описывается как:

URL-адрес, по которому будут развернуты файлы.

https://github.com/angular/angular-cli/wiki/build

Я видел решения, в которых используется --deploy-urlинформация о том, --base-hrefкогда приложение будет развернуто в подпапке сервера.

Вопрос

В чем разница между --base-hrefи --deploy-urlпараметрами углового-кли инструмент? Когда я должен использовать каждый из них?

Родриго
источник

Ответы:

26

Чтобы поместить свои скрипты в папку « / test / app1 / script / », я использую эту команду :

ng build --prod --base-href /test/app1/ --deploy-url /test/app1/script/

Таким образом, мое приложение доступно по адресу https://example.com/test/app1/, но мои сценарии JS и CSS находятся в каталоге https://example.com/test/app1/script/ .

Билл Зеленко
источник
Это отличный ответ, но имейте в виду, что он может вызвать отложенную загрузку модулей. Например: { path: 'myModule', loadChildren: () => import( './myModule/my.module' ).then( m => m.MyModule ) }
Кен Хадден,
9

Если я хочу использовать / users в качестве базы моего приложения для маршрутизатора и / public в качестве базы для моих активов.

ng build --prod --base-href /users --deploy-url /public 

См. Подробный пример в блоге Шекхара Гулати ...

Годфри
источник
Я слежу за этой веткой с моей проблемой, похожей на эту. Вот моя команда: «ng build --watch = true --baseHref = / dist / --outputPath = D: \ application_root \ dist --deployUrl = / dist /». Я пытаюсь сказать, что приложение запускается из папки application_root, но весь код для внешнего интерфейса находится в подпапке dist. Также мне нужно скопировать index.html из dist в корень?
Марк
1
это --base-href /users/и нет --base-href /users. (отсутствует косая черта)
bvdb