check out rocket:module
. It will share magnific-popup from NPM with all the Meteor packages of a given Meteor application at the same time so you don't have to wrap magnific-popup from NPM inside of your gabrielengel:konecty-magnific-popup package.
This reduces the amount of maintenance that you need to do to publish new versions of magnific-popup by 100%, while affording other Meteor package developers the freedom to use other NPM packages that may also depend on magnific-popup from NPM.
There's no way you'd want to wrap all the NPM packages that depend on magnific-popup from NPM into your gabrielengel:konecty-magnific-popup package.
rocket:module
allows for Meteor packages to get and share external libraries from NPM, avoiding the pollution of the Atmosphere caused by Meteor packages that depend on the same NPM packages. Meteor's default behavior is to compile, save, and store an NPM package into each Meteor package during publication of the Meteor packages onto Atmosphere.
For example, if 10 Meteor packages in your application depend on 10 libraries from NPM, and those 10 NPM libraries all depend on React from NPM, then your application now has 10 copies of the React library...
That's 10 singleton React objects in your application.
React isn't meant to be used that way. That's way worse than having 10 versions of jQuery running in the same application: $
, $1
, $2
, $3
, $4
, $5
, $6
, $7
, $8
, $9
, and $10
.
To help the cause, use rocket:module
to specify all your NPM dependencies. Once you've done that, rocket:module
will handle the sharing of those NPM modules across your app's Meteor packages.