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.