Qual é a diferença entre os parâmetros --base-href e --deploy-url da ferramenta angular-cli

93

A documentação do Angular informa que devo usar o --base-hrefparâmetro no build do aplicativo Angular para produção quando ele for implantado em uma subpasta do servidor:

Se você copiar os arquivos em uma subpasta do servidor, anexe o sinalizador de compilação --base-hrefe defina o <base href>apropriado.

Por exemplo, se index.htmlestiver no servidor em /my/app/index.html, defina o href de base para <base href="https://stackoverflow.com/my/app/">assim.

https://angular.io/guide/deployment

No entanto, o angular-cli tem o --deploy-urlparâmetro. A documentação da ferramenta descreve como:

URL onde os arquivos serão implantados.

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

Eu vi soluções que usam o --deploy-urlinstado de --base-hrefquando o aplicativo será implantado em uma subpasta do servidor.

A questão

Qual é a diferença entre os parâmetros --base-hrefe --deploy-urlda ferramenta angular-cli? Quando devo usar cada um?

Rodrigo
fonte

Respostas:

28

Para colocar meus scripts dentro da pasta " / test / app1 / script / ", uso este comando :

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

Portanto, meu aplicativo pode ser acessado em https://example.com/test/app1/, mas meus scripts JS e CSS estão no diretório https://example.com/test/app1/script/ .

Bill Zelenko
fonte
Esta é uma ótima resposta, mas esteja avisado que pode afetar o carregamento lento de módulos. Por exemplo: { path: 'myModule', loadChildren: () => import( './myModule/my.module' ).then( m => m.MyModule ) }
Ken Hadden
11

Se eu quiser usar / users como minha base de aplicativo para o roteador e / public como base para meus ativos.

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

Veja o blog de Shekhar Gulati para um exemplo detalhado ...

Godfrey
fonte
Estou seguindo este tópico com o meu semelhante a este problema. Aqui está meu comando: "ng build --watch = true --baseHref = / dist / --outputPath = D: \ application_root \ dist --deployUrl = / dist /". O que estou tentando dizer é que execute o aplicativo da pasta application_root, mas todo o código para o front-end está localizado na subpasta "dist". Também preciso copiar index.html de dist para a raiz?
Marcar
2
é --base-href /users/e não --base-href /users. (barra faltando)
bvdb