Чтобы ответить на один из вопросов, необходимо иметь как глобальную, так и локальную установку для работы инструментов.
Если вы попытаетесь запустить 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, я опубликую это здесь.