What is @angular/compiler-cli?
The @angular/compiler-cli package provides command-line interfaces to perform Angular compilations. It is primarily used to compile Angular applications into JavaScript code that can be executed by browsers. It leverages the Angular Compiler (ngc) which is a superset of the TypeScript compiler (tsc) and includes Angular-specific metadata processing.
What are @angular/compiler-cli's main functionalities?
Ahead-of-Time (AOT) Compilation
Compiles Angular HTML and TypeScript code into efficient JavaScript code during the build process before the browser downloads and runs that code. This is the main feature of the compiler-cli which results in faster rendering, fewer asynchronous requests, smaller Angular framework download size, and better security.
ngc -p tsconfig.app.json
Incremental Builds
Supports incremental compilation by reusing the previous compilation results to speed up subsequent compilations. This feature is useful for large projects to reduce build times.
ngc --incremental
Link Time Code Generation
Processes libraries to generate Ivy-compatible code as part of the Angular Ivy compilation pipeline. This feature is used when compiling libraries with the Ivy renderer.
ngc --create-ivy-entry-points
Other packages similar to @angular/compiler-cli
typescript
The TypeScript compiler is similar to @angular/compiler-cli in that it compiles TypeScript code to JavaScript. However, it does not have Angular-specific metadata processing capabilities and is not tailored for Angular applications.
babel
Babel is a JavaScript compiler that can transform syntax, polyfill features that are missing in your target environment, and more. While it is not specific to Angular, it is often used in the JavaScript ecosystem for compiling next-generation JavaScript code down to a form that can be executed in current browsers.
webpack
Webpack is a module bundler that can also perform various optimizations and transformations on your code, including compiling TypeScript with the appropriate loader. It is more general-purpose compared to @angular/compiler-cli and is used in a wide variety of JavaScript applications, not just Angular.
18.1.0 (2024-07-10)
common
| Commit | Type | Description |
| -- | -- | -- |
| f25653e231 | fix | typo in NgOptimizedImage warning (#56756) |
| 9b35726e42 | fix | typo in warning for NgOptimizedDirective (#56817) |
compiler
| Commit | Type | Description |
| -- | -- | -- |
| fd6cd0422d | feat | Add extended diagnostic to warn when there are uncalled functions in event bindings (#56295) |
| 341a116d61 | fix | allow more characters in let declaration name (#56764) |
| 2a1291e942 | fix | give precedence to local let declarations over parent ones (#56752) |
compiler-cli
| Commit | Type | Description |
| -- | -- | -- |
| 66e582551e | fix | avoid duplicate diagnostics for let declarations read before definition (#56843) |
| 4d18c5bfd5 | fix | flag all conflicts between let declarations and local symbols (#56752) |
| 9e21582456 | fix | Show template syntax errors in local compilation modified (#55855) |
| 5996502921 | fix | type check let declarations nested inside nodes (#56752) |
| cdebf751e4 | fix | used before declared diagnostic not firing for control flow blocks (#56843) |
core
| Commit | Type | Description |
| -- | -- | -- |
| ea3c802056 | feat | Add a schematic to migrate afterRender phase flag (#55648) |
| 5df3e78c99 | feat | add equality function to rxjs-interop toSignal
(#56447) |
| 0a48d584f2 | feat | add support for let syntax (#56715) |
| 352e0782ec | feat | expose signal input metadata in ComponentMirror
(#56402) |
| a655e46447 | feat | Redesign the afterRender
& afterNextRender
phases API (#55648) |
| e5a6f91722 | feat | support TypeScript 5.5 (#56096) |
| 38effcc63e | fix | Add back phase flag option as a deprecated API (#55648) |
| 86bcfd3e49 | fix | improve docs on afterRender hooks (#56522) |
| b2445a0953 | fix | link errors to ADEV (#55554) (#56038) |
| 03a2acd2a3 | fix | properly remove imports in the afterRender phase migration (#56524) |
| 4d87b9e899 | fix | rename the equality function option in toSignal (#56769) (#56922) |
| 8bd4c074af | fix | toSignal equal option should be passed to inner computed (#56903) |
forms
| Commit | Type | Description |
| -- | -- | -- |
| 00bde8b1c2 | fix | Make NgControlStatus
host bindings OnPush
compatible (#55720) |
http
| Commit | Type | Description |
| -- | -- | -- |
| cc21989132 | fix | Make Content-Type
header case insensitive (#56541) |
language-service
| Commit | Type | Description |
| -- | -- | -- |
| b400e2e4d4 | feat | autocompletion for the component not imported (#55595) |
| 67b2c336bc | fix | import the default exported component correctly (#56432) |
router
| Commit | Type | Description |
| -- | -- | -- |
| a13f5da773 | feat | Allow UrlTree
as an input to routerLink
(#56265) |
| 1d3a7529b4 | feat | Set a different browser URL from the one for route matching (#53318) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.0.7"></a>