Quelle est la différence entre les paramètres --base-href et --deploy-url de l'outil angular-cli

89

La documentation d'Angular indique que je devrais utiliser le --base-hrefparamètre dans la version de l'application Angular pour la production lorsqu'il sera déployé dans un sous-dossier du serveur:

Si vous copiez les fichiers dans un sous-dossier du serveur, ajoutez l'indicateur de construction --base-hrefet définissez le <base href>correctement.

Par exemple, si le index.htmlest sur le serveur à /my/app/index.html, définissez le href de base <base href="https://stackoverflow.com/my/app/">comme ceci.

https://angular.io/guide/deployment

Cependant, angular-cli a le --deploy-urlparamètre. La documentation de l'outil le décrit comme:

URL où les fichiers seront déployés.

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

J'ai vu des solutions qui utilisent l' --deploy-urlinstant --base-hrefoù l'application va être déployée dans un sous-dossier de serveur.

La question

Quelle est la différence entre --base-hrefet les --deploy-urlparamètres de l'outil angular-cli? Quand dois-je utiliser chacun d'eux?

Rodrigo
la source

Réponses:

26

Pour mettre mes scripts dans le dossier " / test / app1 / script / ", j'utilise cette commande :

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

Ainsi mon application est accessible sur https://example.com/test/app1/ mais mes scripts JS et CSS sont dans le répertoire https://example.com/test/app1/script/ .

Bill Zelenko
la source
C'est une excellente réponse, mais sachez que cela peut affecter le chargement paresseux des modules. Ex: { path: 'myModule', loadChildren: () => import( './myModule/my.module' ).then( m => m.MyModule ) }
Ken Hadden
9

Si je veux utiliser / users comme base d'application pour le routeur et / public comme base pour mes actifs.

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

Voir le blog de Shekhar Gulati pour un exemple détaillé ...

Godfrey
la source
Je suis ce fil avec mon similaire à ce problème. Voici ma commande: "ng build --watch = true --baseHref = / dist / --outputPath = D: \ application_root \ dist --deployUrl = / dist /". Ce que j'essaie de dire, c'est que lancez l'application à partir du dossier racine_application, mais tout le code pour le front-end se trouve dans le sous-dossier "dist". Dois-je également copier index.html de dist vers la racine?
Mark
1
c'est --base-href /users/et non --base-href /users. (barre oblique manquante)
bvdb