I know, that there are on-going efforts to push Meteor more into the NPM world, see the recently updated roadmap.
While I saw the big advantage to open Meteor to allow the usage of NPMs in projects without the need to write a wrapper package as it had been before, I’m not quite satisfied with the idea of putting everything into NPMs.
AFAIK Atmosphere packages provide a few advantages, which I don’t know to achieve using a NPM-only platform:
- Tool-chain integration: It’s quite easy to maintain an Atmosphere package as part of a bigger project. The Meteor build tool takes care of it and performs a recompilation, when files change. On the other hand, many NPMs are built using their own toolchain, so changing the source needs an additional compilation step, until it can be used in the Meteor project.
- Deep integration: The Meteor ecosystem relies on some basic assumptions, e. g. that there is a MongoDB in place. This allows the development of packages, which maintain their own collections. You can just install a package providing all the necessary database, backend and frontend code.
- Multiple targets: Atmosphere packages allow to address multiple targets, so to provide a different code to Cordova than to the web browser.
- Static assets: Using static assets from NPMs needs at least an additional step (like creating a symbolic link or copying them into the static folder).
I don’t know, how these advantages could be achieved by using NPM packages. It would need a specific NPM format, like for the Gatsby plugins
I just remember the
yogiben:admin package as well as Meteor Toys, which were/are absolutely awesome, especially how easy they’ve been to be integrated into my own projects.
How would the transition from Atmosphere to NPM look like? What are the advantages?
If there’re good reasons to perform this transition, I’d start with a description, how such Meteor compatible NPMs should look like – maybe it would be just enough to provide the package.js on root level of the package. At least, it should provide all the nice features, that we currently appreciate with Atmosphere packages.
Maybe, such a NPM-only structure would allow to elevate Meteor to version 2.0