Jakieś 10 dni temu powitaliśmy Angulara w wersji 7.0.0!
Większej rewolucji nie ma – jeśli ktoś spodziewał się masy nowych funkcjonalności, to będzie srogo zwiedziony. Za to poprawionych zostało trochę bugów, generalnie sporo drobnicy, oraz nie wszedł jeszcze nowy renderer – Ivy, który nadal jest w fazie rozwoju. Co ważne, nie ma żadnych breaking changes!
Przegląd nowości
1. Rozszerzanie AngularCompilerOptions
Do tej pory mogliśmy dziedziczyć właściowości w pliku tsconfig.json po innym pliku konfiguracyjnym, używając właścwiości „extends” i podając ścieżkę do pliku. Niestety taki zabieg nie działał na „angularCompilerOptions”. Od wersji Angular 7, „angularCompilerOptions” uwzględnia to co jest w pliku bazowym.
1 2 3 4 5 6 7 8 |
ts config file { "extends": "../../tsconfig.base.json", "compilerOptions": {...}, "angularCompilerOptions": {...} } |
2. Wsparcie dla TypeScript 3.1 i RxJS 6.3 i Node10.
Angular 7.0.0 ma support TS 3.1, więc teraz możemy bez obaw używać świeżej wersji TS w projekcie.
3. Domyślny bundle budget
W pliku angular.json, możemy skonfigurować budżety, dzięki którym będziemy informowani, czy np. nasz główny bundle przekroczyl określoną wagę. Więcej przeczytasz tutaj:
https://medium.com/dailyjs/how-did-angular-cli-budgets-save-my-day-and-how-they-can-save-yours-300d534aae7a
Od wersji 7, Angular ustawia domyślny warning i error dla początkowego bundla aplikacji:
1 2 3 4 5 6 |
// angular.json "budgets": [{ "type": "initial", "maximumWarning": "2mb", "maximumError": "5mb" }] |
4. Angular Material 7
W Angular Material 7.0.0 pojawiło się:
- Virtual Scrolling: https://material.angular.io/cdk/scrolling/overview
- Drag & Drop: https://material.angular.io/cdk/drag-drop/overview
- Wsparcie dla natywnego <select> w <mat-form-field>
- 250+ poprawek do wydajności / błędów
5. Podpowiedzi CLI
Teraz podczas tworzenia nowego projektu (komenda „ng new”), dostaniemy propozycje dodania wbudowanych features, takich jak np. routing, czy SCSS.
6. Automatyczne usuwanie Reflect-metadata z wersji produkcyjnej
Angular w wersji siódmej, dba o to aby na etapie builda produkcyjnego, został usunięty Reflect-metadata z polyfills.ts (jest potrzebny tylko w development mode).
Jeśli chcesz zapoznać się ze wszystkimi zmianami, to zachęcam do przejrzenia change logs:
- https://github.com/angular/angular/blob/master/CHANGELOG.md
- recenzjahttps://github.com/angular/angular-cli/releases
- https://github.com/angular/material2/blob/master/CHANGELOG.md
Planując aktualizację do wersji 7, warto skorzystać z https://update.angular.io/.
Udanych migracji, ja już czekam na wersję ósmą! :).
..
Skoro nie ma breaking changes, to po co podniesli majora? To nie jest zgodne z semver
wg mnie mają własną politykę wersjonowania, która właściwie jest już zaplanowana od 2 lat (czyli co pół roku major, na wiosnę będzie Angular 8). Na pewno nie byli w stanie np. rok temu przewidzieć, czy w kolejnych wersjach wystąpią breaking changes