How to update ADF from version 2.4.0 to 2.5.0

cancel
Showing results for 
Search instead for 
Did you mean: 

How to update ADF from version 2.4.0 to 2.5.0

dvuika
Alfresco Employee
2 1 3,659

Make sure you have a backup copy of your project or create a separate branch prior to upgrade.

In this article, we are going to dwell on upgrading an ADF project 2.4.0 to 2.5.0 that also features update versions of the following libraries:

  • Angular 6.x
  • Angular Material 6.x
  • Angular CLI 6.x
  • RxJs 6.x

All Yeoman blueprints have been upgraded to use the libraries above. You can generate a new application based on one of the templates having Angular 6 configuration out of the box. Alternatively, you can use Yeoman templates as a reference for a working project setup and correct dependency versions.

Upgrading ADF libraries

Regardless of the project type, upgrade core ADF libraries to the latest version.

npm i -E alfresco-js-api@2.5.0
npm i -E @alfresco/adf-core@2.5.0

Depending on the type of the project, ACS-only, APS-only or mixed one, update the corresponding libraries

npm i -E @alfresco/adf-content-services@2.5.0
npm i -E @alfresco/adf-process-services@2.5.0
npm i -E @alfresco/adf-insights@2.5.0‍‍‍

If you have a large application, make sure checking the official update guide from Angular team: Angular Update Guide . Note, however, that update steps in this guide take into account the upgrade process from 5.1 to 6.0 from the official guide extended with steps related to ADF.

Update tsconfig.json

Append the following setting to the "tsconfig.json" file in the root project folder:

"angularCompilerOptions": {
    "preserveWhitespaces": false
}

Update Angular CLI

Use the following commands to update to the latest version of Angular CLI

npm i -D @angular/cli@latest
ng update @angular/cli

During the update, the main Angular CLI configuration file ".angular-cli.json" is renamed to "angular.json". Angular tools should safely upgrade the content of the file as well.

Update package.json scripts

In the "package.json" file, replace the "test" script with the following:

"test": "ng test",

Update libraries

First, update the core layout and component libraries:

npm i @angular/flex-layout@latest
ng update @angular/core

Next, you need to address the third-party date picker component used by ADF.

npm i @angular/material-moment-adapter@latest
ng update @mat-datetimepicker/moment‍‍
ng update @mat-datetimepicker/core

You may see a single error related to typescript in the console during the upgrade. It should work fine at the end.

Finally, update Angular Material, Translate and various other dependencies:

ng update @angular/material
ng update @ngx-translate/core

npm i -E pdfjs-dist@2.0.303
npm i minimatch-browser

RxJs compatibility layer

In order to migrate to latest RxJs you may want installing compatibility layer that helps to prevent breaking changes during upgrade:

npm i rxjs-compat@latest

Verify application upgrade

Build the application to ensure everything compiles without errors:

ng build

Verify the production build:

ng build --prod

Finally, ensure the application runs correctly:

npm start

You may get the warning about “zlib" in pdf.js library is a known issue and does not affect the application.

WARNING in ./node_modules/pdfjs-dist/build/pdf.js
Module not found: Error: Can't resolve 'zlib' in '/node_modules/pdfjs-dist/build'

It will be fixed once Mozilla releases a fix for this warning.

Upgrade your application code to latest RxJs

Please refer to the following guide on how to upgrade to RxJs 6.x: rxjs/migration.md at master · ReactiveX/rxjs · GitHub 

Once you are finished, remove the compatibility layer:

npm rm rxjs-compat
1 Comment
kasper
Partner

There is a problem when upgrading with the following part: 

npm i @angular/material-moment-adapter@latest
ng update @mat-datetimepicker/moment
ng update @mat-datetimepicker/core
‍‍‍

It wants to install versions 2.0.0 but ADF requires 2.0.1 To solve this  you can manually first install version 2.0.1 of the mat-datetimepicker

npm install @mat-datetimepicker/moment@2.0.1
npm install @mat-datetimepicker/core@2.0.1
‍‍‍‍‍‍

After this you still need to do the "ng update" parts Smiley Happy