¿Cuál es la diferencia entre los parámetros --base-href y --deploy-url de la herramienta angular-cli?

89

La documentación de Angular informa que debería usar el --base-hrefparámetro en la compilación de la aplicación Angular para producción cuando se vaya a implementar en una subcarpeta del servidor:

Si copia los archivos en una subcarpeta del servidor, agregue el indicador de compilación --base-hrefy establezca el <base href>.

Por ejemplo, si index.htmlestá en el servidor en /my/app/index.html, configure el href base de <base href="https://stackoverflow.com/my/app/">esta manera.

https://angular.io/guide/deployment

Sin embargo, el angular-cli tiene el --deploy-urlparámetro. La documentación de la herramienta la describe como:

URL donde se implementarán los archivos.

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

He visto soluciones que utilizan el --deploy-urlinsted de --base-hrefcuándo se implementará la aplicación en una subcarpeta del servidor.

La pregunta

¿Cuál es la diferencia entre --base-hrefy los --deploy-urlparámetros de la herramienta angular-cli? ¿Cuándo debo usar cada uno?

Rodrigo
fuente

Respuestas:

26

Para poner mis scripts dentro de la carpeta " / test / app1 / script / ", uso este comando :

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

Por lo tanto, mi aplicación es accesible en https://example.com/test/app1/ pero mis scripts JS y CSS están en el directorio https://example.com/test/app1/script/ .

Bill Zelenko
fuente
Esta es una gran respuesta, pero tenga en cuenta que puede afectar la carga diferida de módulos. Por ejemplo: { path: 'myModule', loadChildren: () => import( './myModule/my.module' ).then( m => m.MyModule ) }
Ken Hadden
9

Si quiero usar / users como base de mi aplicación para el enrutador y / public como base para mis activos.

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

Consulte el blog de Shekhar Gulati para ver un ejemplo detallado ...

Godfrey
fuente
Estoy siguiendo este hilo con mi similar a este problema. Aquí está mi comando: "ng build --watch = true --baseHref = / dist / --outputPath = D: \ application_root \ dist --deployUrl = / dist /". Lo que estoy tratando de decir es que ejecute la aplicación desde la carpeta application_root, pero todo el código para el front-end se encuentra en la subcarpeta "dist". ¿También tengo que copiar index.html de dist a la raíz?
Marcos
1
sus --base-href /users/ y no --base-href /users. (Falta barra)
bvdb