As part of version 3.0.0 eight packages (dojo/has, dojo/shim, dojo/core, dojo/i18n, dojo/widget-core, dojo/routing, dojo/stores and dojo/test-extras) have been consolidated into a new package called @dojo/framework.
To facilitate a friction-free upgrade process there is a migration command @dojo/cli-upgrade-app
that should automatically update all import paths to point to the new framework package.
To install the command run the following from the project root:
npm install @dojo/cli-upgrade-app --no-save
To perform the migration, run the following command from the project root:
dojo upgrade app
Next, you get prompted to make sure that you want to continue as the changes are irreversible once executed. The output from the migration tool should return the files scanned and changed:
Processing 49 files...
Spawning 7 workers...
Sending 7 files to free worker...
Sending 7 files to free worker...
Sending 7 files to free worker...
Sending 7 files to free worker...
Sending 7 files to free worker...
Sending 7 files to free worker...
Sending 7 files to free worker...
All done.
Results:
0 errors
27 unmodified
0 skipped
22 ok
Time elapsed: 0.677seconds
At this point, the project is ready to have the old @dojo dependencies removed and the new @dojo/framework installed. The commands for doing this get included in the migration tools output.
Upgrade complete, you can now add the new dojo/framework dependency and safely remove deprecated dependencies with the following:
install the dojo framework package:
npm install @dojo/framework
remove legacy packages:
npm uninstall -S -D @dojo/core @dojo/has @dojo/i18n @dojo/widget-core @dojo/routing @dojo/stores @dojo/shim @dojo/test-extras
If the project is using @dojo/widgets and @dojo/interop, these require upgrading to version 3.0.0. These packages get upgraded by running npm upgrade
in the project root.
It is also recommended to run dojo version --outdated
to check for outdated cli commands.
Note: The migration tool may create line lengths that violate your projects linting rules, be sure to run your linter and manually fix violations.
The default value of the legacy
flag in @dojo/cli-build-app
gets changed from true
to false
. If the project needs to support IE11, then the legacy flag needs to be passed on the command line or saved in the projects .dojorc
file.
To run the build in legacy
mode use the --legacy true
on the command line.
If you do not have a .dojorc
file run dojo init
from your projects root directory and then edit the file with the following contents
{
"build-app": {
"legacy": true
}
}