When developing a large app, a modular package architecture is desirable. I like the Meteor approach and I like the structure that Vulcan uses (each feature is in its own package)
There is also a trend towards monorepos. LernaJS project says:
… some projects will organize their codebases into multi-package repositories (sometimes called monorepos). Projects like Babel, React, Angular, Ember, Meteor, Jest, and many others develop all of their packages within a single repository.
Lerna is a tool that optimizes the workflow around managing multi-package repositories with git and npm.
There seems to be a significant overlap between Meteor and Lerna when it comes to package approach. I don’t know too much about Lerna, however, there are two downsides to Meteor (from a “marketing perspective”):
- It uses a non-standard package.js. I imagine some people would be afraid of being “locked-in” to Meteor.
- Packages are mixing client and server code. This often makes sense but also is also non-standard.
Which approach do you think is better (Meteor or Lerna). Or is there a third way that I’m not aware of?