There are going to be three ‘sets’ of dependencies to update: The java (Ignition SDK) dependencies, which are found in
web/packages/designer/package.json, and finally, the ‘build’ dependency versions for the web tools (nodejs, npm, yarn), which will be in BOTH one or more package.json
devDependencies, and encoded in the build.gradle file for the web subproject.
There’s no single ‘best’ way to update dependencies in a polyglot project like this – you just kind of do it, and try to deal with any issues you come across in the process. I’d personally start by upgrading the tool versions (in the web build.gradle and package.json devDependencies), run a build and make sure it assembles ok (may want to run the ‘clean’ task first). Then upgrade the sdk versions in the build.gradle files, again, build and make sure things compile. Then, upgrade the versions in the package.json.
I personally do all the above manually. It’s not fun, and can be very time consuming when dealing with the web dependencies due to how poorly the nodejs dependency management works. Unfortunately, that’s really all we can do without any alternatives. Make sure to make a commit with each step so you can easily ‘undo’ changes easily.
Perspective is by far the most complex build we have for a module, and challenging dependency maintenance is something you’ll have to learn to be comfortable with if you’re maintaining modules for it. Learning and understanding the tooling (gradle, node, npm/yarn, webpack) is crucial if you want to avoid have a really bad time of it.
The web world moves really fast, and as much as I’d love to be more ‘hands off’ in maintaining dependencies, we need to move with it. If you’re maintaining a module, it would definitely benefit you to update it with each ignition release, to stay consistent the dependencies we list in the
package.json of the
@inductiveautomation/perspective-designer we publish with the sdk.