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 serveem 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 npmcomando 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 newenquanto estiver dentro da estrutura de pastas de um aplicativo CLI existente, receberá este erro adorável:
Você não pode usar o newcomando 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/setcom a --globalopçã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 ngcomandos só faz sentido com a versão local, como lint, builde 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.