Is there any tutorial on how to upgrade complex 1.2 apps?

I wanted to use the holidays to upgrade my Meteor 1.2 app to 1.4, with the intermediate step of upgrading to 1.3. The official upgrade guide in the Meteor Guide sounded quite optimistic. No breaking changes I really had to worry about. Cool.

But when I actually tried to do the upgrade, I fell from one trap into the other. The first upgrade trial failed because fourseven:scss wasn’t compatible anymore (and the package docs stated the wrong version to update to), then I learned that mquandalle:bower was incompatible and broke the build again. sigh

Ok, these two packages were the ones that caused most headaches when upgrading from 1.1 to 1.2, so I wasn’t actually surprised (did I mention that I would long for a first-class SCSS support in Meteor? :slight_smile: ).

Good, then let’s try to get rid of mquandalle:bower. The docs state that I should use NPM packages instead. So I had a look at the guide again on how to use these packages inside Atmosphere packages (as I did with Bower, to keep my app modularized). Learned that this is not the best idea because in this case multiple versions of the same NPM package could be loaded in the client. Ok, that’s why I used bower.json to fine-tune things.

Diving deeper into the NPM-related meteor docs, I learned about a magic meteor-node-stubs NPM package I should consider including in my app. But this package has no documentation on NPM at all. Okay?

Also learned that I should better use modules instead of my beloved local Meteor packages. But the Guide does not tell me how I can share these packages across apps (like I could do with the PACKAGE_DIRS folder), nor does it tell me how I could mimick the architecture options of api.addFiles(), which is quite vital if you develop mobile and web apps on the same code base.

In other words: I’m quite stuck. Is there any good tutorial written by somebody who already did an update of a complex Meteor app that uses Cordova? Any link would be appreciated.

(This is not intended to be “rant”. It’s just frustration. I love Meteor, but not when I upgrade it :slight_smile: )

2 Likes

Did you have any luck with your upgrade?
I’m having the same issues, I have a “big” app that uses more than 150 packages and +100K lines of code and I can’t get even the app running on 1.3 version.

I really do not know where to start and it seems that the only solution will be to rewrite everything from scratch, although I do not fancy this idea.

Nope, I eventually gave up. Breaking changes in the build system bricked some of the community packages. Although most of them had published updates for 1.3+, it took me way too much time to figure out how everything had to be reconnected / refactored to make things work again. Most problems were related to fourseven:scss and mquandalle.bower, the latter did not even support Meteor 1.3+ anymore. I was using this package a lot, to workaround unmaintained Atmosphere packages that were just copies of NPM or Bower packages. Probably wasn’t a good idea.

This is not to blame the package owners. I can understand they have to struggle with the build system transformation. But for me, the time to invest wasn’t worth it (yet). Plus, I would have also risked that some of my Cordova packages would have bricked, too, since every Meteor version brings a new Cordova version.

I clearly see the benefits of transforming my app to ES6 packages, NPM and such. But I just don’t have time to do it (and figure out how to do it right).

thats exactly my problem too. I started my project long time before the version 1.0 and had a couple of time rewrite a lot of stuff due to breaking changes (i remember the upgrade to 0.9 was a pain).

The question now is whether to continue building new features on the 1.2 version or stop and rewrite everything to +1.4 version, but still I’m using so many 3rd party packages that I will have to fork and rewrite them to +1.4 to be fully compatible and this is actually what prevents me from investing my time on migrating.

Glad to hear I am not alone with this. Nearly every time I mention here in the forums that I have huge pains updating Meteor beyond 1.2, I hear from others that it was just a matter of meteor update for them. Yet, I don’t think I am using Meteor in an “unusual” way. I just used a lot of packages and configuration options that aren’t there anymore…

1 Like