Para responder una de las preguntas, es necesario tener una instalación global y local para que las herramientas funcionen.
Si intenta ejecutar ng serve
una 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 npm
comando 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 new
mientras está dentro de la estructura de carpetas de una aplicación CLI existente, obtendrá este error encantador:
No puede usar el new
comando dentro de un proyecto CLI angular.
Otros comandos que se pueden ejecutar desde la instalación global son ng help
, ng get/set
con la --global
opció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 ng
comandos solo tienen sentido con la versión local, como lint
, build
y 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í.