Was ist der Unterschied zwischen den Parametern --base-href und --deploy-url des Angular-Cli-Tools?

89

Die Dokumentation von Angular informiert mich darüber, dass ich --base-hrefParameter im Build der Angular-Anwendung für die Produktion verwenden sollte, wenn sie in einem Unterordner des Servers bereitgestellt werden sollen:

Wenn Sie die Dateien in einen Server-Unterordner kopieren, hängen Sie das Build-Flag an --base-hrefund legen Sie das <base href>entsprechende fest.

Wenn sich das index.htmlauf dem Server befindet /my/app/index.html, setzen Sie die Basis-HREF so, dass sie <base href="https://stackoverflow.com/my/app/">so aussieht .

https://angular.io/guide/deployment

Der Winkel-cli hat jedoch den --deploy-urlParameter. Die Dokumentation des Tools beschreibt es als:

URL, unter der Dateien bereitgestellt werden.

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

Ich habe Lösungen gesehen, die den --deploy-urlZeitpunkt verwenden, zu dem --base-hrefdie Anwendung in einem Unterordner des Servers bereitgestellt werden soll.

Die Frage

Was ist der Unterschied zwischen --base-hrefund den --deploy-urlParametern des Angular-Cli-Tools? Wann sollte ich jeden verwenden?

Rodrigo
quelle

Antworten:

26

Um meine Skripte in den Ordner " / test / app1 / script / " zu legen , verwende ich diesen Befehl :

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

Daher ist meine App unter https://example.com/test/app1/ zugänglich, aber meine JS-Skripte und CSS befinden sich im Verzeichnis https://example.com/test/app1/script/ .

Bill Zelenko
quelle
Dies ist eine gute Antwort, aber seien Sie gewarnt, dass dies zu einem verzögerten Laden von Modulen führen kann. ZB: { path: 'myModule', loadChildren: () => import( './myModule/my.module' ).then( m => m.MyModule ) }
Ken Hadden
9

Wenn ich / users als Anwendungsbasis für den Router und / public als Basis für meine Assets verwenden möchte.

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

Ein detailliertes Beispiel finden Sie in Shekhar Gulatis Blog ...

Godfrey
quelle
Ich verfolge diesen Thread mit meinem ähnlichen Problem. Hier ist mein Befehl: "ng build --watch = true --baseHref = / dist / --outputPath = D: \ application_root \ dist --deployUrl = / dist /". Ich versuche zu sagen, dass die App im Ordner application_root ausgeführt wird, der gesamte Code für das Front-End sich jedoch im Unterordner "dist" befindet. Muss ich auch index.html von dist nach root kopieren?
Mark
1
es ist --base-href /users/und nicht --base-href /users. (fehlender Schrägstrich)
bvdb