Что и зачем делает ngcc?

Ngcc (Angular Compatibility Compiler) является инструментом, предоставляемым Angular, который выполняет преобразования для обеспечения совместимости между кодом, написанным для Angular версии 8 и более ранних, и кодом, написанным для Angular версии 9 и более поздних.

Зачем нужен ngcc?

Перед версией 9 Angular использовал систему компиляции View Engine для преобразования компонентов Angular в браузерный код. Но начиная с версии 9, Angular перешел на использование системы компиляции Ivy. Ivy - это новый движок компиляции Angular, который предоставляет намного более мощные возможности и оптимизации, такие как более быстрая компиляция, меньший размер бандлов и улучшенная производительность. Однако, чтобы обеспечить совместимость между приложениями, которые были построены с использованием версии 8 или более ранних и версии 9 или более поздних, был создан инструмент ngcc.

Что делает ngcc?

Ngcc анализирует весь код Angular в вашем проекте и преобразует код, написанный для View Engine, в код, совместимый с Ivy. Это включает в себя преобразование декораторов, директив, пайпов и модулей, а также любых других частей кода, которые могут быть несовместимыми с Ivy. Ngcc также обрабатывает код в сторонних библиотеках, устанавливаемых через npm, и преобразует его в совместимый формат.

Когда использовать ngcc?

Ngcc обычно используется при обновлении Angular проекта с версии 8 или более ранних до версии 9 или более поздних. Перед тем как обновить версию Angular, необходимо запустить команду ng update @angular/core, которая автоматически запускает ngcc для обновления всего кода Angular.

Как использовать ngcc?

Ngcc обычно запускается автоматически при выполнении команды ng build или ng serve, если в вашем проекте присутствуют зависимости, написанные для версии 8 или более ранних Angular. Однако, если вам нужно запустить ngcc вручную, можно выполнить команду npx ngcc. Это запустит ngcc для анализа и обновления всего кода Angular в вашем проекте.

Вывод:

Ngcc - это инструмент Angular, который обеспечивает совместимость между кодом, написанным для версии 8 и более ранних, и кодом, написанным для версии 9 и более поздних. Он анализирует и преобразует код для обеспечения работоспособности с новым движком компиляции Ivy, предоставляя тем самым возможность использования всех преимуществ и оптимизаций, которые предлагает Ivy.