Copyright from: www.talkingdotnet.com
Angular 6 is out!! It’s another major release focused on minimum new features and more on the tooling to make upgrading and adding new libraries a lot easier. Earlier I posted about creating an Angular 5 application with Visual Studio 2017 using ASP.NET Core 2.1 SPA templates. Now, it’s time to upgrade the same angular app to the latest version which is Angular 6. This post talks about how to upgrade Angular 5 app to Angular 6 with Visual Studio 2017. The steps given in this post are applicable to any Angular 5 app, not limited Visual Studio 2017.
Upgrade Angular 5 app to Angular 6
- First, Update the Angular CLI to the latest version globally using following command:1
npm install -g @angular/cli
- Next, we need to update Angular CLI local version specific to the app. To do that, navigate to the Angular app root folder (where package.json lives) and run the following command.1
npm install @angular/cli
- Angular CLI now offers support for workspaces containing multiple projects, such as multiple applications or libraries. So, it’s now possible to have several applications in the same CLI project (called a workspace), and to create libraries (a shared set of components, directives, pipes and services)! This new architecture uses
angular.json
instead of.angular-cli.json
for build and project configuration. So, the.angular-cli.json
file needs to be deleted and the newangular.json
file needs to be added in the project. Don’t worry, you don’t have to do this manually. Run the following command to convert the configuration file to the new format (angular.json
). - Next, it is time to upgrade all the framework packages to Angular 6. To do that, run the following command:1
ng update @angular/core
All the Angular framework packages are upgraded to Angular 6. You can verify it via thepackage.json
file. - The default ASP.NET Core SPA template doesn’t use Angular Material, but if you are using it in your app, update Angular Material to the latest version by running the following command:1
ng update @angular/material
- Next, run
ng update
to identify and update other dependencies. - Angular 6 now depends on TypeScript 2.7 and RxJS 6. So, we need to upgrade RxJS. You would be already thinking about making the code changes manually everywhere RxJS imports and operators are used. Don’t worry, there’s a package that takes care of this. Run the following commands to upgrade RxJS.12
npm install -g rxjs-tslint
rxjs-5-to-6-migrate -p src/tsconfig.app.json
Once this is done, removerxjs-compat
. This package is required to get backwards compatibility with RxJS previous to version 6. But, it is no longer required now, so let’s remove it using the following command:1npm uninstall rxjs-compat
- Now, run
ng serve
to see the application is building and running without any error. There is one more thing left here. If we build the application from Visual Studio 2017 and run it, You may see the following exception in the browser.InvalidOperationException: The NPM script ‘start’ exited without indicating that the Angular CLI was listening for requests. The error output was: Unknown option: ‘–extractCss’This is because theng serve
command no longer supports--extractCss
option. The extractCSSis a JavaScript library and an online tool that lets you extract element ID, class and inline styles from the HTML document and output them as a CSS style sheet. This option is not available onng serve
because it is an option related to building, not to serving.To fix this, remove the--extract-css
option from theng serve
command in the scripts section ofpackage.json
file.1"start"
:
"ng serve"
Save thepackage.json
file, build the app and run again. You should see the app running in the browser.Though, you can still extract the CSS while doingng serve
by modifying theangular.json
. To do that, you need to add a serve rule to build architect inangular.json
. Like,123456789101112131415"architect"
: {
"build"
: {
"builder"
:
"@angular-devkit/build-angular:browser"
,
"options"
: {
---Options
//Removed intentionally
},
"configurations"
: {
"production"
: {
---Options
//Removed intentionally
},
"serve"
: {
"extractCss"
:
true
}
}
},
Then, changeserve->options->browserTarget->project-name:build
toproject-name:build:serve
. Like,1234567891011"serve"
: {
"builder"
:
"@angular-devkit/build-angular:dev-server"
,
"options"
: {
"browserTarget"
:
"MigrateAngular5To6:build:serve"
},
"configurations"
: {
"production"
: {
"browserTarget"
:
"MigrateAngular5To6:build:production"
}
}
}
Please see the below image to know more about the changes.
1
| ng update @angular/cli |
Once this command is completed successfully, you can see the
angular.json
file in the solution explorer. I had to run this command twice to get the new file. So, if you can’t find the new angular.json
file in the solution explorer after running the command for the first time, give it a second try.
You can learn more about the
angular.json
file here.
If you want to learn all of Angular, I want to personally recommend ng-book as the single-best resource out there. You can get a copy here.
That’s it. Congratulations, you have successfully upgraded your Angular 5 app to Angular 6.
No comments:
Post a Comment