Sara Chipps started this awesome thread about bundler vs. npm. You should check it out cause it's highly entertaining. https://twitter.com/SaraJChipps/status/484727602049859584
But I do want to get more info on the workflow problems people experience with npm. It has always been the simplest thing to me. But I'm also fully aware that perceptions are relative. Most ruby folks are totally fine with bundler even though it gives me constant headaches. But the bundler issues are well documented. This seems to be less true for npm. I want to gather some info about people's experiences. I promise I'll try to refrain from the canned "you're doing it wrong" response.
Also, we've already established that npm is network hungry and could do a better job of maintaining an offline cache. https://twitter.com/ag_dubs/status/484733343108706305 Nobody's arguing that. But I'm less concerned about feature requests here. I'm interested in where npm breaks for you.
Here's Ryan Florence. https://twitter.com/ryanflorence/status/484730296156176385
`rm -rf node_modules && npm cache clean && npm install && npm dedupe` feels almost as reassuring as just `bundle install`
I want to hear about the step before this where something's wrong and a simple npm install
doesn't fix it. Messing around with the cache suggests there's something very strange in people's workflows. And messing around with dedupe suggests that the dependency tree that people are trying to achieve is very different from mine. Trashing your whole node_modules folder shouldn't be required. But it's usually an easier step than trying to debug whatever weird state you got yourself into. I believe this is because npm installs don't usually fail and you can just refresh your whole dep tree fairly easily (network permitting).
But these are just my own perceptions. So lets hear it. Why do you hate npm?
@rockbot what's your understanding of @tomdale's issue? I admit I very rarely get this kind of warning. Is this part of the "peer dependencies" topic? I admit I have avoided that whole thing because it always sounded like a bad idea to me.
In Tom's example, I would prefer to have 2 versions of rsvp installed. On at the root and one under
broccoli-sane-watcher
. I believe the problem is that if deps forbroccoli-sane-watcher
are not installed yet, but you donpm install
from the root of your project, npm recurses up the dir tree and finds rsvp in the project root. That version doesn't meet the requirements for the broccoli module. But if you run this program and the broccoli module callsrequire('rsvp')
it will get that version, but it's own version is not installed.That makes sense based on how npm module loading works. What I don't understand is how you end up with
broccoli-sane-watcher
installed but no rsvp underneath it. Is broccoli checked into version control?