Recently, I published a new module to the canjs
ecosystem, can-globals
, and deprecated its predecessor. In doing so I broke lots of things. I've tried to recall the events to make a list of the lessons that I learned in hopes that other can learn vicariously from my mistakes.
Integrating a module that is version 0.0.x
with other projects is a terrible idea, primarily because npm
treats these the same as a pinned module, even if prefixed with ^
. Meaning if you release a change to the module, you must then update the package.json
of its dependents to reference the new version. This can also cause problems with circular dependencies; imagine you have a module with a circular dependency that is a dependent of your module, your module is namespace
d, you upgrade the dependent to the latest version of your module but the circular dependency means it is still referencing the old version as well which will ca