Para responder una de las preguntas, es necesario tener una instalación global y local para que las herramientas funcionen.
Si intenta ejecutar ng serveuna aplicación sin la instalación local de la CLI (solo instalación global), obtendrá el siguiente error.
Debe estar dentro de un proyecto de CLI angular para utilizar el comando de servicio.
También imprimirá este mensaje:
Please take the following steps to avoid issues:
"npm install --save-dev @angular/cli@latest"
Ejecute ese npmcomando para actualizar la CLI localmente y evite la advertencia que está recibiendo.
Otra pregunta: Parece que no tienen que estar sincronizados, pero probablemente sea mejor que lo estén para evitar cualquier comportamiento inusual con la herramienta, o cualquier inconsistencia con el código que genera la herramienta.
¿Por qué necesitamos tanto la instalación global como una instalación local?
La instalación global es necesaria para iniciar una nueva aplicación. El ng new <app-name>comando se ejecuta utilizando la instalación global de la CLI. De hecho, si intenta ejecutar ng newmientras está dentro de la estructura de carpetas de una aplicación CLI existente, obtendrá este error encantador:
No puede usar el newcomando dentro de un proyecto CLI angular.
Otros comandos que se pueden ejecutar desde la instalación global son ng help, ng get/setcon la --globalopción de, ng version, ng doc, y ng completion.
La instalación local de la CLI se usa después de que se haya creado una aplicación. De esta manera, cuando hay nuevas versiones de la CLI disponibles, puede actualizar su instalación global y no afectar la instalación local. Esto es bueno para la estabilidad de un proyecto. La mayoría de los ngcomandos solo tienen sentido con la versión local, como lint, buildy serve, etc.
Según el archivo Léame de CLI GitHub , para actualizar la CLI debe actualizar el paquete global y local. Sin embargo, he usado la CLI donde las versiones global y local varían sin ningún problema hasta ahora. Si alguna vez me encuentro con un error relacionado con tener las versiones de CLI global y local fuera de sincronización, lo publicaré aquí.