Чтобы ответить на один из вопросов, необходимо иметь как глобальную, так и локальную установку для работы инструментов.
Если вы попытаетесь запустить ng serve
приложение без локальной установки интерфейса командной строки (только для глобальной установки), вы получите следующую ошибку.
Вы должны быть внутри проекта Angular CLI, чтобы использовать команду serve.
Также будет напечатано это сообщение:
Please take the following steps to avoid issues:
"npm install --save-dev @angular/cli@latest"
Выполните эту npm
команду, чтобы обновить CLI локально и избежать получения предупреждения.
Другой вопрос: похоже, что они не должны быть синхронизированы, но, вероятно, лучше, чтобы они были во избежание какого-либо необычного поведения инструмента или любых несоответствий с кодом, который генерирует инструмент.
Зачем нам нужна как глобальная, так и локальная установка?
Глобальная установка необходима для запуска нового приложения. Команда ng new <app-name>
запускается с использованием глобальной установки интерфейса командной строки. Фактически, если вы попытаетесь запустить ng new
внутри структуры папок существующего приложения CLI, вы получите эту прекрасную ошибку:
Вы не можете использовать new
команду внутри Angular CLI проекта.
Другие команды , которые могут быть запущены из глобальной установки являются ng help
, ng get/set
с --global
опцией ng version
, ng doc
и ng completion
.
Локальная установка интерфейса командной строки используется после сборки приложения. Таким образом, когда будут доступны новые версии CLI, вы можете обновить глобальную установку, не влияя на локальную установку. Это хорошо для стабильности проекта. Большинство ng
команд имеют смысл только для локальной версии, например lint
, build
и serve
т. Д.
Согласно readme CLI GitHub , для обновления CLI необходимо обновить глобальный и локальный пакет. Однако я использовал CLI, где глобальная и локальная версии меняются без каких-либо проблем. Если я когда-нибудь столкнусь с ошибкой, связанной с синхронизацией глобальной и локальной версий CLI, я опубликую это здесь.