NPM v4.0.0
github.com
github.com
I use npm 90% for install, and yarn does this so much better.
Installs are 3-4 times faster. Output is minimal and readable (compared to npm's wall of text that I never read). Packages are cached so I can work with slow connections in coffee shops.
Sorry to be blunt, but I feel none of the release features gonna help my daily usage of npm. How about actually fixing the tab completion, which has been slow and broken forever?
"Don't I already have a tool that does exactly this?"
I wouldn't want 1 tool to rule them all, but a single tooling/dev/task kit and a single dependency/pckg manager would be nice.
/rant
Thanks for the highlight, I use npm solely for global installs, will give yarn a try.
I don't know where you've been but anyone who is even remotely invested in the npm ecosystem probably knows what Yarn is at this point.
Well, you can't always depend on that, and in the end of the day, nothing beats actually researching and asking around.
The GNU tools have some of the worst webpages -- and yet they are some of the most useful, and commonly used, packages.
1. https://www.gnu.org/software/tar/ 2. https://gnu.io/social/
Really descriptive.
And DuckDuckGo (mentioned twice in the comment) is relevant because?
And why should we know about DDG's index info about Yarn?
Just visit Yarn's actual project site (which is what you're supposed to be criticizing), and focus your critique on what's actually there now.
>Also, because people communicate using language, not axioms.
So? How does that justify adding off-topic/redundant information on one's critique?
I don't mean to be rude, but your last paragraph comes across a bit strange, it sounds like you have a sense of entitlement to having NPM work the way you want. The project is open source, you can fix it, send a pull request, and the whole community will benefit. I wonder if it would have been better if the Yarn developers would had done the same.
1. We have a finite amount of time each week just like everyone else. Fixing a problem with an open source project might consume a couple weeks of free time just for a tiny bug fix, because of the time it takes to learn a new code base, get tests running, and other administrative details. Larger fixes might consume an entire year.
2. Sometimes, problems are design flaws and can't really be made into pull requests. I have a strong suspicion that some of the problems with NPM fall into this camp, based on my personal experiences with NPM and how badly it performs some of its basic tasks relative to the project's age and maturity.
I'm going to flip this around, so please forgive if this seems trite, but it sounds like you have a sense of entitlement yourself. Users do not "owe" the projects they use pull requests just because it's possible. Users have their own goals and motivations, and if a competing program is simply better than the program you like (from some users' perspective) it's absurd to blame the users for it.
(I mean, from personal experience NPM is an astoundingly poor package manager. I've had it OOM on me on VMs for the most basic of tasks, and some commands are completely unusable.)
We as developers can work together on open source projects, and make them better for everyone. It's not like closed source software where the choices are a) use a competing product or b) write our own. And by work I don't mean just writing code: writing documentation and even reporting issues is just as valuable.
It seems to me that the JavaScript community is very quick to say "this is s..t, I can do better!" and throw away all the work someone has done and reimplement it from scratch. Sometimes developers take criticism very badly, so I agree it isn't always an possible to say "how about you try this", and I agree sometimes the code is beyond saving and it is better just to start afresh. But as someone who is mainly an outsider to the community, it seems like there is very much an epidemic of NIH syndrome, and people aren't even willing to try contributing.
Maybe you are right about my sense of entitlement, but I do truly believe if we would work together more and be less self-centred, society would benefit greatly from it.
You're right that the JS community is quick to dump a project. You're also right that sometimes code is beyond saving and it's better to start afresh. As someone who claims to be an outsider to the JS community, maybe you don't understand just how broken NPM is, and how much we welcome the appearance of something like Yarn.
This is the real beauty of having a separate package repository and package manager, and the beauty of open source software when it's made out of components with well-defined interfaces. Yarn can still use the NPM repository, but Yarn will suffer from far fewer of the deficiencies that NPM has. The exact same thing has happened in other communities many times. Haskell went from Cabal to Stack, Python went from easy_install to pip, and most Linux distros have been through their fair share of package managers. As someone who has personally migrated from Cabal to Stack and from easy_install to pip, the change from NPM to Yarn seems familiar.
Or in other words, the replacement of NPM (the package manager) with Yarn is a healthy thing that is happening for good reasons (because reporting issues, writing documentation, and submitting PRs will not make NPM do what you want, and saying that we "should" do those things is wrong).
However, experience has proven that it is difficult to actually contribute--even in active repo like npm. Every project has there own standards and unwritten rules. Further, many repo maintainers are unresponsive after initial contact, adding frustration to an already frustrating process of getting work put in.
Let's take npm/npm as an example. There is no easy to find contributing guidelines, thousands of open issues, and pull requests that have been open for months where the author requests more info so they can complete their work but without an answer. All of this leads to a contributor-hostile experience.
I think we as a community should consolidate the contribution process, and start treating that as a product and gets the same love the code does.
Yeah right. It's not as easy as "hey here's a big PR that overhauls the install algorithm and caching!" and npm will be like "ok merged". A PR (or series of PRs) like these would stall for months or even longer (just check out the amount of open PRs and issues in the npm repo).
"The easiest way to get started is to run: npm install -g yarn"
(Also, something something "easy_install pip" or "gem install bundler")
So the most interesting part of npm4 release are the announced improvements that are coming in npm5 :)
Is there any reason to do this?
(Personally, I think `latest` conveys the intended meaning with more clarity, but I don't like the way Node/npm deals with language and community conduct)
This kind of thinking has no place in serious software development.
https://github.com/django/django/pull/2692
I don't see a reason to get all fussed about a terminology change that hurts no one and prevents upset, though.
https://www.drupal.org/node/2275877
https://github.com/rust-lang/rust-buildbot/issues/2
https://github.com/antirez/redis/issues/3185
I just mentioned it because I notice a greater sensitivity about language in the npm community, e.g. never using gendered language.
I don't share the view that "master" somehow endorses or minimizes slavery.
That said, I'm still not certain about shrinkwrap excluding dev deps. I mainly use it to ensure my build agent uses the same dependencies as my dev box, and at a time when things like babel pull in a ridiculous amount of sub dependencies, it really does not make sense to not lock down _all_ your dependencies by default.
Luckily, npm shrinkwrap accepts a --dev option to include devDependencies
If you're including pure-JavaScript artifacts in your npm releases, downstream authors probably don't care about your Babel/Webpack configuration.
Why? That seems like a good default, something most people would need.