Para responder a uma das perguntas, é necessário ter uma instalação global e local para que as ferramentas funcionem.
Se você tentar executar ng serve
em um aplicativo sem a instalação local da CLI (somente instalação global), receberá o seguinte erro.
Você deve estar dentro de um projeto da CLI Angular para usar o comando serve.
Também imprimirá esta mensagem:
Please take the following steps to avoid issues:
"npm install --save-dev @angular/cli@latest"
Execute esse npm
comando para atualizar a CLI localmente e evite o aviso que você está recebendo.
Outra pergunta: parece que eles não precisam estar sincronizados, mas provavelmente é melhor que eles sejam para evitar qualquer comportamento incomum com a ferramenta ou qualquer inconsistência com o código que a ferramenta gera.
Por que precisamos da instalação global e de uma instalação local?
A instalação global é necessária para iniciar um novo aplicativo. O ng new <app-name>
comando é executado usando a instalação global da CLI. De fato, se você tentar executar ng new
enquanto estiver dentro da estrutura de pastas de um aplicativo CLI existente, receberá este erro adorável:
Você não pode usar o new
comando dentro de um projeto da CLI angular.
Outros comandos que podem ser executados a partir da instalação global são ng help
, ng get/set
com a --global
opção de, ng version
, ng doc
, e ng completion
.
A instalação local da CLI é usada após a construção de um aplicativo. Dessa forma, quando novas versões da CLI estiverem disponíveis, você poderá atualizar sua instalação global e não afetar a instalação local. Isso é bom para a estabilidade de um projeto. A maioria dos ng
comandos só faz sentido com a versão local, como lint
, build
e serve
, etc.
De acordo com o leia-me da CLI GitHub , para atualizar a CLI, você deve atualizar o pacote global e local. No entanto, usei a CLI em que a versão global e local varia sem problemas até o momento. Se algum dia eu encontrar um erro relacionado a ter as versões da CLI global e local fora de sincronia, postarei isso aqui.