Jaka jest różnica między parametrami --base-href i --deploy-url narzędzia angular-cli

89

Dokumentacja Angulara informuje, że powinienem użyć --base-hrefparametru w aplikacji Angular zbudowanej na produkcję, gdy ma być ona wdrożona w podfolderze serwera:

Jeśli skopiujesz pliki do podfolderu serwera, dołącz flagę kompilacji --base-hrefi ustaw <base href>odpowiednio plik .

Na przykład, jeśli index.htmlna serwerze znajduje się pod adresem /my/app/index.html, ustaw podstawowy element href na <base href="https://stackoverflow.com/my/app/">taki.

https://angular.io/guide/deployment

Jednak angular-cli ma --deploy-urlparametr. Dokumentacja narzędzia opisuje to jako:

Adres URL, pod którym zostaną wdrożone pliki.

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

Widziałem rozwiązania obsługi --deploy-urlinsted --base-hrefgdy aplikacja ma być wdrożony w podfolderze serwerze.

Pytanie

Jaka jest różnica między --base-hrefi --deploy-urlparametrami narzędzia Angular-CLI? Kiedy powinienem używać każdego z nich?

Rodrigo
źródło

Odpowiedzi:

26

Aby umieścić moje skrypty w folderze „ / test / app1 / script / ”, używam tego polecenia :

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

Dlatego moja aplikacja jest dostępna pod adresem https://example.com/test/app1/, ale moje skrypty JS i CSS znajdują się w katalogu https://example.com/test/app1/script/ .

Bill Zelenko
źródło
To świetna odpowiedź, ale pamiętaj, że może to spowodować leniwe ładowanie modułów. Np .: { path: 'myModule', loadChildren: () => import( './myModule/my.module' ).then( m => m.MyModule ) }
Ken Hadden
9

Jeśli chcę używać / users jako bazy aplikacji dla routera i / public jako bazy dla moich zasobów.

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

Zobacz blog Shekhara Gulatiego, aby zapoznać się ze szczegółowym przykładem ...

Godfrey
źródło
Śledzę ten wątek z moim podobnym do tego problemu. Oto moje polecenie: "ng build --watch = true --baseHref = / dist / --outputPath = D: \ application_root \ dist --deployUrl = / dist /". Chcę przez to powiedzieć, że uruchamiam aplikację z folderu application_root, ale cały kod interfejsu użytkownika znajduje się w podfolderze „dist”. Czy muszę też skopiować plik index.html z dist do katalogu głównego?
Mark
1
to --base-href /users/i nie --base-href /users. (brakujący ukośnik)
bvdb