I’d also installed and used the linting package designed to highlight likely issues when upgrading. Unfortunately this turned out to be my downfall when also using the very latest versions of other packages, including moving from @ionic/ng-toolkit + the Ionic schematics helper to the new @ionic/angular-toolkit as described here.

I wasn’t clear why Webpack was relevant, but suspected use of a custom Webpack loader in my previous tests was somehow interfering with the normal (non-test) build toolchain.

Because of this suspicion I also tried explicitly adding Webpack as a dependency, but this led to a different ContextElementDependency error, resulting from an apparent clash between multiple Webpack binaries.

I now think my own Webpack use was a red herring. Upon removing the dev dependency on v4-migration-tslint, everything worked! So as useful as it is in initially checking your code for required markup & TypeScript updates, it seems this is definitely not a package to keep around for longer than necessary.