npx
Version:
execute npm package binaries
991 lines (815 loc) β’ 81.2 kB
Markdown
## v4.6.1 (2017-04-21)
A little release to tide you over while we hammer out the last bits for npm@5.
### FEATURES
* [`d13c9b2f2`](https://github.com/npm/npm/commit/d13c9b2f24b6380427f359b6e430b149ac8aaa79)
`init-package-json@1.10.0`:
The `name:` prompt is now `package name:` to make this less ambiguous for new users.
The default package name is now a valid package name. For example: If your package directory
has mixed case, the default package name will be all lower case.
* [`f08c66323`](https://github.com/npm/npm/commit/f08c663231099f7036eb82b92770806a3a79cdf1)
[#16213](https://github.com/npm/npm/pull/16213)
Add `--allow-same-version` option to `npm version` so that you can use `npm version` to run
your version lifecycles and tag your git repo without actually changing the version number in
your `package.json`.
([@lucastheisen](https://github.com/lucastheisen))
* [`f5e8becd0`](https://github.com/npm/npm/commit/f5e8becd05e0426379eb0c999abdbc8e87a7f6f2)
Timing has been added throughout the install implementation. You can see it by running
a command with `--loglevel=timing`. You can also run commands with `--timing` which will write
an `npm-debug.log` even on success and add an entry to `_timing.json` in your cache with
the timing information from that run.
([@iarna](https://github.com/iarna))
### BUG FIXES
* [`9c860f2ed`](https://github.com/npm/npm/commit/9c860f2ed3bdea1417ed059b019371cd253db2ad)
[#16021](https://github.com/npm/npm/pull/16021)
Fix a crash in `npm doctor` when used with a registry that does not support
the `ping` API endpoint.
([@watilde](https://github.com/watilde))
* [`65b9943e9`](https://github.com/npm/npm/commit/65b9943e9424c67547b0029f02b0258e35ba7d26)
[#16364](https://github.com/npm/npm/pull/16364)
Shorten the ELIFECYCLE error message. The shorter error message should make it much
easier to discern the actual cause of the error.
([@j-f1](https://github.com/j-f1))
* [`a87a4a835`](https://github.com/npm/npm/commit/a87a4a8359693518ee41dfeb13c5a8929136772a)
`npmlog@4.0.2`:
Fix flashing of the progress bar when your terminal is very narrow.
([@iarna](https://github.com/iarna))
* [`41c10974f`](https://github.com/npm/npm/commit/41c10974fe95a2e520e33e37725570c75f6126ea)
`write-file-atomic@1.3.2`:
Wait for `fsync` to complete before considering our file written to disk.
This will improve certain sorts of Windows diagnostic problems.
* [`2afa9240c`](https://github.com/npm/npm/commit/2afa9240ce5b391671ed5416464f2882d18a94bc)
[#16336](https://github.com/npm/npm/pull/16336)
Don't ham-it-up when expecting JSON.
([@bdukes](https://github.com/bdukes))
### DOCUMENTATION FIXES
* [`566f3eebe`](https://github.com/npm/npm/commit/566f3eebe741f935b7c1e004bebf19b8625a1413)
[#16296](https://github.com/npm/npm/pull/16296)
Use a single convention when referring to the `<command>` you're running.
([@desfero](https://github.com/desfero))
* [`ccbb94934`](https://github.com/npm/npm/commit/ccbb94934d4f677f680c3e2284df3d0ae0e65758)
[#16267](https://github.com/npm/npm/pull/16267)
Fix a missing space in the example package.json.
([@famousgarkin](https://github.com/famousgarkin))
### DEPENDENCY UPDATES
* [`ebde4ea33`](https://github.com/npm/npm/commit/ebde4ea3363dfc154c53bd537189503863c9b3a4)
`hosted-git-info@2.4.2`
* [`c46ad71bb`](https://github.com/npm/npm/commit/c46ad71bbe27aaa9ee10e107d8bcd665d98544d7)
`init-package-json@1.9.6`
* [`d856d570d`](https://github.com/npm/npm/commit/d856d570d2df602767c039cf03439d647bba2e3d)
`npm-registry-client@8.1.1`
* [`4a2e14436`](https://github.com/npm/npm/commit/4a2e1443613a199665e7adbda034d5b9d10391a2)
`readable-stream@2.2.9`
* [`f0399138e`](https://github.com/npm/npm/commit/f0399138e6d6f1cd7f807d523787a3b129996301)
`normalize-package-data@2.3.8`
### v4.5.0 (2017-03-24)
Welcome a wrinkle on npm's registry API!
Codename: Corgi

This release has some bug fixes, but it's mostly about bringing support for
MUCH smaller package metadata. How much smaller? Well, for npm itself it
reduces 416K of gzip compressed JSON to 24K.
As a user, all you have to do is update to get to use the new API. If
you're interested in the details we've [documented the
changes](https://github.com/npm/registry/blob/master/docs/responses/package-metadata.md)
in detail.
#### CORGUMENTS
Package metadata: now smaller. This means a smaller cache and less to download.
* [`86dad0d74`](https://github.com/npm/npm/commit/86dad0d747f288eab467d49c9635644d3d44d6f0)
Add support for filtered package metadata.
([@iarna](https://github.com/iarna))
* [`41789cffa`](https://github.com/npm/npm/commit/41789cffac9845603f4bdf3f5b03f412144a0e9f)
`npm-registry-client@8.1.0`
([@iarna](https://github.com/iarna))
#### NO SHRINKWRAP, NO PROBLEM
Previously we needed to extract every package's tarball to look for an
`npm-shrinkwrap.json` before we could begin working through what its
dependencies were. This was one of the things stopping npm's network
accesses from happening more concurrently. The new filtered package
metadata provides a new key, `_hasShrinkwrap`. When that's set to `false`
then we know we don't have to look for one.
* [`4f5060eb3`](https://github.com/npm/npm/commit/4f5060eb31b9091013e1d6a34050973613a294a3)
[#15969](https://github.com/npm/npm/pull/15969)
Add support for skipping `npm-shrinkwrap.json` extraction when the
registry can affirm that one doesn't exist.
([@iarna](https://github.com/iarna))
#### INTERRUPTING SCRIPTS
* [`878aceb25`](https://github.com/npm/npm/commit/878aceb25e6d6052dac15da74639ce274c8e62c5)
[#16129](https://github.com/npm/npm/pull/16129)
Better handle Ctrl-C while running scripts. `npm` will now no longer exit
until the script it is running has exited. If you press Ctrl-C a second
time it kill the script rather than just forwarding the Ctrl-C.
([@jaridmargolin](https://github.com/jaridmargolin))
#### DEPENDENCY UPDATES:
* [`def75eebf`](https://github.com/npm/npm/commit/def75eebf1ad437bf4fd3f5e103cc2d963bd2a73)
`hosted-git-info@2.4.1`:
Preserve case of the user name part of shortcut specifiers, previously they were lowercased.
([@iarna](https://github.com/iarna))
* [`eb3789fd1`](https://github.com/npm/npm/commit/eb3789fd18cfb063de9e6f80c3049e314993d235)
`node-gyp@3.6.0`: Add support for VS2017 and Chakracore improvements.
([@refack](https://github.com/refack))
([@kunalspathak](https://github.com/kunalspathak))
* [`245e25315`](https://github.com/npm/npm/commit/245e25315524b95c0a71c980223a27719392ba75)
`readable-stream@2.2.6` ([@mcollina](https://github.com/mcollina))
* [`30357ebc5`](https://github.com/npm/npm/commit/30357ebc5691d7c9e9cdc6e0fe7dc6253220c9c2)
`which@1.2.14` ([@isaacs](https://github.com/isaacs))
### v4.4.4 (2017-03-16)
π©π€π
Okay! We have another `next`
release for ya today. So, yes! With v4.4.3 we fixed the bug that made
bundled scoped modules uninstallable. But somehow I overlooked the fact
that we: A) were using these and B) that made upgrading to v4.4.3 impossible. π
So I've renamed those two scoped modules to no longer use scopes and we now
have a shiny new test to ensure that scoped modules don't creep into our
transitive deps and make it impossible to upgrade to `npm`.
(None of our woes applies to most of you all because most of you all don't
use bundled dependencies. `npm` does because we want the published artifact to be
installable without having to already have `npm`.)
* [`2a7409fcb`](https://github.com/npm/npm/commit/2a7409fcba6a8fab716c80f56987b255983e048e)
[#16066](https://github.com/npm/npm/pull/16066)
Ensure we aren't using any scoped modules
Because `npm`s prior 4.4.3 can't install dependencies that have bundled scoped
modules. This didn't show up sooner because they ALSO had a bug that caused
bundled scoped modules to not be included in the bundle.
([@iarna](https://github.com/iarna))
* [`eb4c70796`](https://github.com/npm/npm/commit/eb4c70796c38f24ee9357f5d4a0116db582cc7a9)
[#16066](https://github.com/npm/npm/pull/16066)
Switch to move-concurrently to remove scoped dependency
([@iarna](https://github.com/iarna))
### v4.4.3 (2017-03-15)
This is a small patch release, mostly because the published tarball for
v4.4.2 was missing a couple of modules, due to a bug involving scoped
modules, bundled dependencies and legacy tree layouts.
There are a couple of other things here that happened to be ready to go. So
without further adoβ¦
#### BUG FIXES
* [`3d80f8f70`](https://github.com/npm/npm/commit/3d80f8f70679ad2b8ce7227d20e8dbce257a47b9)
[npm/fs-vacuum#6](https://github.com/npm/fs-vacuum/pull/6)
`fs-vacuum@1.2.1`: Make sure we never, ever remove home directories. Previously if your
home directory was entirely empty then we might `rmdir` it.
([@helio-frota](https://github.com/helio-frota))
* [`1af85ca9f`](https://github.com/npm/npm/commit/1af85ca9f4d625f948e85961372de7df3f3774e2)
[#16040](https://github.com/npm/npm/pull/16040)
Fix bug where bundled transitive dependencies that happened to be
installed under bundled scoped dependencies wouldn't be included in the
tarball when building a package.
([@iarna](https://github.com/iarna))
* [`13c7fdc2e`](https://github.com/npm/npm/commit/13c7fdc2e87456a87b1c9385a3daeae228ed7c95)
[#16040](https://github.com/npm/npm/pull/16040)
Fix a bug where bundled scoped dependencies couldn't be extracted.
([@iarna](https://github.com/iarna))
* [`d6cde98c2`](https://github.com/npm/npm/commit/d6cde98c2513fe160eab41e31c3198dfde993207)
[#16040](https://github.com/npm/npm/pull/16040)
Stop printing `ENOENT` errors more than once.
([@iarna](https://github.com/iarna))
* [`722fbf0f6`](https://github.com/npm/npm/commit/722fbf0f6cf4413cdc24b610bbd60a7dbaf2adfe)
[#16040](https://github.com/npm/npm/pull/16040)
Rewrite the `extract` action for greater clarity.
Specifically, this involves moving things around structurally to do the same
thing [`d0c6d194`](https://github.com/npm/npm/commit/d0c6d194) did, but in a more comprehensive manner.
This also fixes a long standing bug where errors from the move step would be
eaten during this phase and as a result we would get mysterious crashes in
the finalize phase when finalize tried to act on them.
([@iarna](https://github.com/iarna))
* [`6754dabb6`](https://github.com/npm/npm/commit/6754dabb6bd3301504efb3b62f36d3fe70958c19)
[#16040](https://github.com/npm/npm/pull/16040)
Flatten out `@npmcorp/move`'s deps for backwards compatibility reasons. Versions prior to this
one will fail to install any package that bundles a scoped dependency. This was responsible
for `ENOENT` errors during the `finalize` phase.
([@iarna](https://github.com/iarna))
#### DOC UPDATES
* [`fba51c582`](https://github.com/npm/npm/commit/fba51c582d1d08dd4aa6eb27f9044dddba91bb18)
[#15960](https://github.com/npm/npm/pull/15960)
Update troubleshooting and contribution guide links.
([@watilde](https://github.com/watilde))
### v4.4.2 (2017-03-09):
This week, the focus on the release was mainly going through [all of npm's deps
that we manage
ourselves](https://github.com/npm/npm/wiki/npm-maintained-dependencies), and
making sure all their PRs and versions were up to date. That means there's a few
fixes here and there. Nothing too big codewise, though.
The most exciting part of this release is probably our [shiny new
Contributing](https://github.com/npm/npm/blob/latest/CONTRIBUTING.md) and
[Troubleshooting](https://github.com/npm/npm/blob/latest/TROUBLESHOOTING.md)
docs! [@snopeks](https://github.com/snopeks) did some β¨fantasticβ¨ work hashing it
out, and we're really hoping this is a nice big step towards making contributing
to npm easier. The troubleshooting doc will also hopefully solve common issues
for people! Do you think something is missing from it? File a PR and we'll add
it! The current document is just a baseline for further editing and additions.
Also there's maybe a bit of an easter egg in this release. 'Cause those are fun and I'm a huge nerd. π
#### DOCUMENTATION AHOY
* [`07e997a`](https://github.com/npm/npm/commit/07e997a7ecedba7b29ad76ffb2ce990d5c0200fc)
[#15756](https://github.com/npm/npm/pull/15756)
Overhaul `CONTRIBUTING.md` and add new `TROUBLESHOOTING.md` files. ππΌ
([@snopeks](https://github.com/snopeks))
* [`2f3e4b6`](https://github.com/npm/npm/commit/2f3e4b645cdc268889cf95ba24b2aae572d722ad)
[#15833](https://github.com/npm/npm/pull/15833)
Mention the [24-hour unpublish
policy](http://blog.npmjs.org/post/141905368000/changes-to-npms-unpublish-policy)
on the main registry.
([@carols10cents](https://github.com/carols10cents))
#### NOT REALLY FEATURES, NOT REALLY BUGFIXES. MORE LIKE TWEAKS? π€
* [`84be534`](https://github.com/npm/npm/commit/84be534aedb78c65cd8012427fc04871ceeccf90)
[#15888](https://github.com/npm/npm/pull/15888)
Stop flattening `ls`-tree output. From now on, deduped deps will be marked as
such in the place where they would've been before getting hoisted by the
installer.
([@iarna](https://github.com/iarna))
* [`e9a5dca`](https://github.com/npm/npm/commit/e9a5dca369ead646ab5922326cede1406c62bd3b)
[#15967](https://github.com/npm/npm/pull/15967)
Limit metadata fetches to 10 concurrent requests.
([@iarna](https://github.com/iarna))
* [`46aa9bc`](https://github.com/npm/npm/commit/46aa9bcae088740df86234fc199f7aef53b116df)
[#15967](https://github.com/npm/npm/pull/15967)
Limit concurrent installer actions to 10.
([@iarna](https://github.com/iarna))
#### BUGFIXES
* [`c3b994b`](https://github.com/npm/npm/commit/c3b994b71565eb4f943cce890bb887d810e6e2d4)
[#15901](https://github.com/npm/npm/pull/15901)
Use EXDEV aware move instead of rename. This will allow moving across devices
and moving when filesystems don't support renaming directories full of files. It might make folks using Docker a bit happier.
([@iarna](https://github.com/iarna))
* [`0de1a9c`](https://github.com/npm/npm/commit/0de1a9c1db90e6705c65c068df1fe82899e60d68)
[#15735](https://github.com/npm/npm/pull/15735)
Autocomplete support for npm scripts with `:` colons in the name.
([@beyondcompute](https://github.com/beyondcompute))
* [`84b0b92`](https://github.com/npm/npm/commit/84b0b92e7f78ec4add42e8161c555325c99b7f98)
[#15874](https://github.com/npm/npm/pull/15874)
Stop using [undocumented](https://github.com/nodejs/node/pull/11355)
`res.writeHeader` alias for `res.writeHead`.
([@ChALkeR](https://github.com/ChALkeR))
* [`895ffe4`](https://github.com/npm/npm/commit/895ffe4f3eecd674796395f91c30eda88aca6b36)
[#15824](https://github.com/npm/npm/pull/15824)
Fix empty versions column in `npm search` output.
([@bcoe](https://github.com/bcoe))
* [`38c8d7a`](https://github.com/npm/npm/commit/38c8d7adc1f43ab357d1e729ae7cd5d801a26e68)
`init-package-json@1.9.5`: [npm/init-package-json#61](https://github.com/npm/init-package-json/pull/61) Exclude existing `devDependencies` from being added to `dependencies`. Fixes [#12260](https://github.com/npm/npm/issues/12260).
([@addaleax](https://github.com/addaleax))
### v4.4.1 (2017-03-06):
This is a quick little patch release to forgo the update notification
checker if you're on an unsuported (but not otherwise broken) version of
Node.js. Right now that means 0.10 or 0.12.
* [`56ac249`](https://github.com/npm/npm/commit/56ac249ef8ede1021f1bc62a0e4fe1e9ba556af2)
[#15864](https://github.com/npm/npm/pull/15864)
Only use `update-notifier` on supported versions.
([@legodude17](https://github.com/legodude17))
### v4.4.0 (2017-02-23):
Aaaah, [@iarna](https://github.com/iarna) here, it's been a little while
since I did one of these! This is a nice little release, we've got an
update notifier, vastly less verbose error messages, new warnings on package
metadata that will probably give you a bad day, and a sprinkling of bug
fixes.
#### UPDATE NOTIFICATIONS
We now have a little nudge to update your `npm`, courtesy of
[update-notifier](https://www.npmjs.com/package/update-notifier).
* [`148ee66`](https://github.com/npm/npm/commit/148ee663740aa05877c64f16cdf18eba33fbc371)
[#15774](https://github.com/npm/npm/pull/15774)
`npm` will now check at start up to see if a newer version is available.
It will check once a day. If you want to disable this, set `optOut` to `true` in
`~/.config/configstore/update-notifier-npm.json`.
([@ceejbot](https://github.com/ceejbot))
#### LESS VERBOSE ERROR MESSAGES
`npm` has, for a long time, had very verbose error messages. There was a
lot of info in there, including the cause of the error you were seeing but
without a lot of experience reading them pulling that out was time consuming
and difficult.
With this change the output is cut down substantially, centering the error
message. So, for example if you try to `npm run sdlkfj` then the entire
error you'll get will be:
```
npm ERR! missing script: sldkfj
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/rebecca/.npm/_logs/2017-02-24T00_41_36_988Z-debug.log
```
The CLI team has discussed cutting this down even further and stripping the
`npm ERR!` prefix off those lines too. We'd appreciate your feedback on
this!
* [`e544124`](https://github.com/npm/npm/commit/e544124592583654f2970ec332003cfd00d04f2b)
[#15716](https://github.com/npm/npm/pull/15716)
Make error output less verbose.
([@iarna](https://github.com/iarna))
* [`166bda9`](https://github.com/npm/npm/commit/166bda97410d0518b42ed361020ade1887e684af)
[#15716](https://github.com/npm/npm/pull/15716)
Stop encouraging users to visit the issue tracker unless we know for
certain that it's an npm bug.
([@iarna](https://github.com/iarna))
#### OTHER NEW FEATURES
* [`53412eb`](https://github.com/npm/npm/commit/53412eb22c1c75d768e30f96d69ed620dfedabde)
[#15772](https://github.com/npm/npm/pull/15772)
We now warn if you have a module listed in both dependencies and
devDependencies.
([@TedYav](https://github.com/TedYav))
* [`426b180`](https://github.com/npm/npm/commit/426b1805904a13bdc5c0dd504105ba037270cbee)
[#15757](https://github.com/npm/npm/pull/15757)
Default reporting metrics to default registry. Previously it defaulted to using
`https://registry.npmjs.org`, now it will default to the result of
`npm config get registry`. For most folks this won't actually change anything, but it
means that folks who use a private registry will have metrics routed there by default.
This has the potential to be interesting because it means that in the
future private registry products ([npme](https://npme.npmjs.com/docs/)!)
will be able to report on these metrics.
([@iarna](https://github.com/iarna))
#### BUG FIXES
* [`8ea0de9`](https://github.com/npm/npm/commit/8ea0de98563648ba0db032acd4d23d27c4a50a66)
[#15716](https://github.com/npm/npm/pull/15716)
Write logs for `cb() never called` errors.
* [`c4e83dc`](https://github.com/npm/npm/commit/c4e83dca830b24305e3cb3201a42452d56d2d864)
Make it so that errors while reading the existing node_modules tree can't
result in installer crashes.
([@iarna](https://github.com/iarna))
* [`2690dc2`](https://github.com/npm/npm/commit/2690dc2684a975109ef44953c2cf0746dbe343bb)
Update `npm doctor` to not treat broken symlinks in your global modules as
a permission failure. This is particularly important if you link modules and your text
editor uses the convention of creating symlinks from `.#filename.js` to a
machine name and pid to lock files (eg emacs and compatible things).
([@iarna](https://github.com/iarna))
* [`f4c3f48`](https://github.com/npm/npm/commit/f4c3f489aa5787cf0d60e8436be2190e4b0d0ff7)
[#15777](https://github.com/npm/npm/pull/15777)
Not exactly a bug, but change a parameterless `.apply` to `.call`.
([@notarseniy](https://github.com/notarseniy))
#### DEPENDENCY UPDATES
* [`549dcff`](https://github.com/npm/npm/commit/549dcff58c7aaa1e7ba71abaa14008fdf2697297)
`rimraf@2.6.0`:
Retry EBUSY, ENOTEMPTY and EPERM on non-Windows platforms too.
More reliable `rimraf.sync` on Windows.
([@isaacs](https://github.com/isaacs))
* [`052dfb6`](https://github.com/npm/npm/commit/052dfb623da508f2b5f681da0258125552a18a4a)
`validate-npm-package-name@3.0.0`:
Remove ableist language in README.
Stop allowing ~'!()* in package names.
([@tomdale](https://github.com/tomdale))
([@chrisdickinson](https://github.com/chrisdickinson))
* [`6663ea6`](https://github.com/npm/npm/commit/6663ea6ac0f0ecec5a3f04a3c01a71499632f4dc)
`abbrev@1.1.0` ([@isaacs](https://github.com/isaacs))
* [`be6de9a`](https://github.com/npm/npm/commit/be6de9aab9e20b6eac70884e8626161eebf8721a)
`opener@1.4.3` ([@dominic](https://github.com/dominic))
* [`900a5e3`](https://github.com/npm/npm/commit/900a5e3e3411ec221306455f99b24b9ce35757c0)
`readable-stream@2.2.3` ([@RangerMauve](https://github.com/RangerMauve)) ([@mcollina](https://github.com/mcollina))
* [`c972a8b`](https://github.com/npm/npm/commit/c972a8b0f20a61a79c45b6642f870bea8c55c7e4)
`tacks@1.2.6`
([@iarna](https://github.com/iarna))
* [`85a36ef`](https://github.com/npm/npm/commit/85a36efdac0c24501876875cb9ad40292024e0b0)
[`7ac9265`](https://github.com/npm/npm/commit/7ac9265c56b4d9eeaca6fcfb29513f301713e7bb)
`tap@10.2.0`
([@isaacs](https://github.com/saacs))
### v4.3.0 (2017-02-09):
Yay! Release time! It's a rainy day, and we have another smallish release for
y'all. These things are not necessarily related. Or are they π§π€
As far as news go, you may have noticed that the CLI team dropped support for
`node@0.12` when that version went out of maintenance. Still, we've avoided
explicitly breaking it and `node@0.10` so far -- but not much longer.
Sometime soon, the CLI team plans on switching over to language features only
available as of `node@4 LTS`, and will likely start dropping old versions of node
as they go out of maintenance. The new features are exciting! We're really
looking forward to using them in the core CLI (and its dependencies) as we keep up
with our current feature work.
And speaking of features, this release is a minor bump due to a small change in
how `npm login` works for the sake of supporting OAuth-based login for npm
Enterprise users. But we won't leave the rest of y'all out -- we're working on a
larger version of this feature. Soon enough, you'll be able to log in to npm
with, say, GitHub -- and use some shiny features that come from the integration.
Or turn on 2FA and other such security features. Keep your eyes peeled for new
on this in the next few releases and our weekly newsletter!
#### NEW AUTH TYPES
There's a new command line option: `--auth-type`, which can be used to log in to
a supporting registry with OAuth2 or SAML. The current implementation is mainly
meant to support npmE customers, so if you're one of those: ask us about using
it! If not, just hold off cause we'll have a much more complete version of this
feature out soon.
* [`ac8595e`](https://github.com/npm/npm/commit/ac8595e3c9b615ff95abc3301fac1262c434792c) [`bcf2dd8`](https://github.com/npm/npm/commit/bcf2dd8a165843255c06515fa044c6e4d3b71ca4) [`9298d20`](https://github.com/npm/npm/commit/9298d20af58b92572515bfa9cf7377bd4221dc7d) [`66b61bc`](https://github.com/npm/npm/commit/66b61bc42e81ee8a1ee00fc63517f62284140688) [`dc85de7`](https://github.com/npm/npm/commit/dc85de7df6bb61f7788611813ee82ae695a18f1f)
[#13389](https://github.com/npm/npm/pull/13389)
Implement single-sign-on support with `--auth-type` option.
([@zkat](https://github.com/zkat))
#### FASTER STARTUP. SOMETIMES!
`request` is pretty heavy. And it loads a bunch of things. It's actually a
pretty big chunk of npm's load time. This small patch by Rebecca will make it so
npm only loads that module when we're actually intending to make network
requests. Those of you who use npm commands that run offline might see a small
speedup in startup time.
* [`ac73568`](https://github.com/npm/npm/commit/ac735682e666e8724549d56146821f3b8b018e25)
[#15631](https://github.com/npm/npm/pull/15631)
Lazy load `caching-registry-client`.
([@iarna](https://github.com/iarna))
#### DOCUMENTATION
* [`4ad9247`](https://github.com/npm/npm/commit/4ad9247aa82f7553c9667ee93c74ec7399d6ceec)
[#15630](https://github.com/npm/npm/pull/15630)
Fix formatting/rendering for root npm README.
([@ungoldman](https://github.com/ungoldman))
#### DEPENDENCY UPDATES
* [`8cc1112`](https://github.com/npm/npm/commit/8cc1112958638ff88ac2c24c4a065acacb93d64b)
[npm/hosted-git-info#21](https://github.com/npm/hosted-git-info/pull/21)
`hosted-git-info@2.2.0`:
Add support for `.tarball()` URLs.
([@zkat](https://github.com/zkat))
* [`6eacc1b`](https://github.com/npm/npm/commit/6eacc1bc1925fe3cc79fc97bdc3194d944fce55e)
`npm-registry-mock@1.1.0`
([@addaleax](https://github.com/addaleax))
* [`a9b6d77`](https://github.com/npm/npm/commit/a9b6d775e61cf090df0e13514c624f99bf31d1e7)
`aproba@1.1.1`
([@iarna](https://github.com/iarna))
### v4.2.0 (2017-01-26):
Hi all! I'm Kat, and I'm currently sitting in a train traveling at ~300km/h
through Spain. So clearly, this release should have *something* to do with
speed. And it does! Heck, with this release, you could say we're really
_blazing_, even. π²π₯π
#### IMPROVED CLI SEARCH~
You might recall if you've been keeping up that one of the reasons for a
semver-major bump to `npm@4` was an improved CLI search (read: no longer blowing
up Node). The work done for that new search system, while still relying on a
full metadata download and local search, was also meant to act as groundwork for
then-ongoing work on a brand-new, smarter search system for npm. Shortly after
`npm@4` came out, the bulk of the server-side work was done, and with this
release, the npm CLI has integrated use of the new endpoint for high-quality,
fast-turnaround searches.
No, seriously, it's *fast*. And *relevant*:
[](https://github.com/npm/npm/pull/15481)
Give it a shot! And remember to check out the new website version of the search,
too, which uses the same backend as the CLI now. π
Incidentally, the backend is a public service, so you can write your own search
tools, be they web-based, CLI, or GUI-based. You can read up on the [full
documentation for the search
endpoint](https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md#get-v1search),
and let us know about the cool things you come up with!
* [`ce3ca51`](https://github.com/npm/npm/commit/ce3ca51ca2d60e15e901c8bf6256338e53e1eca2)
[#15481](https://github.com/npm/npm/pull/15481)
Add an internal `gunzip-maybe` utility for optional gunzipping.
([@zkat](https://github.com/zkat))
* [`e322932`](https://github.com/npm/npm/commit/e3229324d507fda10ea9e94fd4de8a4ae5025c75) [`a53055e`](https://github.com/npm/npm/commit/a53055e423f1fe168f05047aa0dfec6d963cb211) [`a1f4365`](https://github.com/npm/npm/commit/a1f436570730c6e4a173ca92d1967a87c29b7f2d) [`c56618c`](https://github.com/npm/npm/commit/c56618c62854ea61f6f716dffe7bcac80b5f4144)
[#15481](https://github.com/npm/npm/pull/15481)
Add support for using the new npm search endpoint for fast, quality search
results. Includes a fallback to "classic" search.
([@zkat](https://github.com/zkat))
#### WHERE DID THE DEBUG LOGS GO
This is another pretty significant change: Usually, when the npm process
crashed, you would get an `npm-debug.log` in your current working directory.
This debug log would get cleared out as soon as you ran npm again. This was a
bit annoying because 1) you would get a random file in your `git status` that
you might accidentally commit, and 2) if you hit a hard-to-reproduce bug and
instinctually tried again, you would no longer have access to the repro
`npm-debug.log`.
So now, any time a crash happens, we'll save your debug logs to your cache
folder, under `_logs` (`~/.npm` on *nix, by default -- use `npm config get
cache` to see what your current value is). The cache will now hold a
(configurable) number of `npm-debug.log` files, which you can access in the
future. Hopefully this will help clean stuff up and reduce frustration from
missed repros! In the future, this will also be used by `npm report` to make it
super easy to put up issues about crashes you run into with npm. ππΊπΏπ―ββοΈ
* [`04fca22`](https://github.com/npm/npm/commit/04fca223a0f704b69340c5f81b26907238fad878)
[#11439](https://github.com/npm/npm/pull/11439)
Put debug logs in `$(npm get cache)/_logs` and store multiple log files.
([@KenanY](https://github.com/KenanY))
([@othiym23](https://github.com/othiym23))
([@isaacs](https://github.com/isaacs))
([@iarna](https://github.com/iarna))
#### DOCS
* [`ae8e71c`](https://github.com/npm/npm/commit/ae8e71c2b7d64d782af287a21e146d7cea6e5273)
[#15402](https://github.com/npm/npm/pull/15402)
Add missing backtick in one of the `npm doctor` messages.
([@watilde](https://github.com/watilde), [@charlotteis](https://github.com/charlotteis))
* [`821fee6`](https://github.com/npm/npm/commit/821fee6d0b12a324e035c397ae73904db97d07d2)
[#15480](https://github.com/npm/npm/pull/15480)
Clarify that unscoped packages can depend on scoped packages and vice-versa.
([@chocolateboy](https://github.com/chocolateboy))
* [`2ee45a8`](https://github.com/npm/npm/commit/2ee45a884137ae0706b7c741c671fef2cb3bac96)
[#15515](https://github.com/npm/npm/pull/15515)
Update minimum supported Node version number in the README to `node@>=4`.
([@watilde](https://github.com/watilde))
* [`af06aa9`](https://github.com/npm/npm/commit/af06aa9a357578a8fd58c575f3dbe55bc65fc376)
[#15520](https://github.com/npm/npm/pull/15520)
Add section to `npm-scope` docs to explain that scope owners will own scoped
packages with that scope. That is, user `@alice` is not allowed to publish to
`@bob/my-package` unless explicitly made an owner by user (or org) `@bob`.
([@hzoo](https://github.com/hzoo))
* [`bc892e6`](https://github.com/npm/npm/commit/bc892e6d07a4c6646480703641a4d71129c38b6d)
[#15539](https://github.com/npm/npm/pull/15539)
Replace `http` with `https` and fix typos in some docs.
([@watilde](https://github.com/watilde))
* [`1dfe875`](https://github.com/npm/npm/commit/1dfe875b9ac61a0ab9f61a2eab02bacf6cce583c)
[#15545](https://github.com/npm/npm/pull/15545)
Update Node.js download link to point to the right place.
([@watilde](https://github.com/watilde))
#### DEPENDENCIES
* [`b824bfb`](https://github.com/npm/npm/commit/b824bfbeb2d89c92762e9170b026af98b5a3668a)
`ansi-regex@2.1.1`
* [`81ea3e8`](https://github.com/npm/npm/commit/81ea3e8e4ea34cd9c2b418512dcb508abcee1380)
`mississippi@1.3.0`
#### MISC
* [`98df212`](https://github.com/npm/npm/commit/98df212a91fd6ff4a02b9cd247f4166f93d3977a)
[#15492](https://github.com/npm/npm/pull/15492)
Update the "master" node version used for AppVeyor to `node@7`.
([@watilde](https://github.com/watilde))
* [`d75fc03`](https://github.com/npm/npm/commit/d75fc03eda5364f12ac266fa4f66e31c2e44e864)
[#15413](https://github.com/npm/npm/pull/15413)
`npm run-script` now exits with the child process' exit code on exit.
([@kapals](https://github.com/kapals))
### v4.1.2 (2017-01-12)
We have a twee little release this week as we come back from the holidays.
#### 0.12 IS UNSUPPORTED NOW (really)
After [jumping the gun a
little](https://github.com/npm/npm/releases/tag/v4.0.2), we can now
officially remove 0.12 from our supported versions list. The Node.js
project has now officially ended even maintenance support for 0.12 and thus,
so will we. To reiterate from the last time we did this:
What this means:
* Your contributions will no longer block on the tests passing on 0.12.
* We will no longer block dependency upgrades on working with 0.12.
* Bugs filed on the npm CLI that are due to incompatibilities with 0.12
(and older versions) will be closed with a strong urging to upgrade to a
supported version of Node.
* On the flip side, we'll continue to (happily!) accept patches that
address regressions seen when running the CLI with Node.js 0.12.
What this doesn't mean:
* The CLI is going to start depending on ES2015+ features. npm continues
to work, in almost all cases, all the way back to Node.js 0.8, and our
long history of backwards compatibility is a source of pride for the
team.
* We aren't concerned about the problems of users who, for whatever
reason, can't update to newer versions of npm. As mentioned above, we're
happy to take community patches intended to address regressions.
We're not super interested in taking sides on what version of Node.js
you "should" be running. We're a workflow tool, and we understand that
you all have a diverse set of operational environments you need to be
able to support. At the same time, we _are_ a small team, and we need
to put some limits on what we support. Tracking what's supported by our
runtime's own team seems most practical, so that's what we're doing.
* [`c7bbba8`](https://github.com/npm/npm/commit/c7bbba8744b62448103a1510c65d9751288abb5d)
Remove 0.12 from our supported versions list.
([@iarna](https://github.com/iarna))
#### WRITING TO SYMLINKED `package.json` (AND OTHER FILES)
If your `package.json`, `npm-shrinkwrap.json` or `.npmrc` were a symlink and
you used an `npm` command that modified one of these (eg `npm config set` or
`npm install --save`) then previously we would have removed your symlink and
replaced it with an ordinary file. While making these files symlinks is pretty
uncommon, this was still surprising behavior. With this fix we now overwrite
the _destination_ of the symlink and preserve the symlink itself.
* [`a583983`](https://github.com/npm/npm/commit/a5839833d3de7072be06884b91902c093aff1aed)
[write-file-atomic/#5](https://github.com/npm/write-file-atomic/issues/5)
[#10223](https://github.com/npm/npm/10223)
`write-file-atomic@1.3.1`:
When the target is a symlink, write-file-atomic now overwrites the
_destination_ of the symlink, instead of replacing the symlink itself. This
makes it's behavior match `fs.writeFile`.
Fixed a bug where it would ALWAYS fs.stat to look up default mode and chown
values even if you'd passed them in. (It still used the values you passed
in, but did a needless stat.)
([@iarna](https://github.com/iarna))
#### DEPENDENCY UPDATES
* [`521f230`](https://github.com/npm/npm/commit/521f230dd57261e64ac9613b3db62f5312971dca)
`node-gyp@3.5.0`:
Improvements to how Python is located. New `--devdir` flag.
([@bnoordhuis](https://github.com/bnoordhuis))
([@mhart](https://github.com/mhart))
* [`ccd83e8`](https://github.com/npm/npm/commit/ccd83e8a70d35fb0904f8a9adb2ff7ac8a6b2706)
`JSONStream@1.3.0`:
Add new emitPath option.
([@nathanwills](https://github.com/nathanwills))
#### TEST IMPROVEMENTS
* [`d76e084`](https://github.com/npm/npm/commit/d76e08463fd65705217624b861a1443811692f34)
Disable metric reporting for test suite even if the user has it enabled.
([@iarna](https://github.com/iarna))
### v4.1.1 (2016-12-16)
This fixes a bug in the metrics reporting where, if you had enabled it then
installs would create a metrics reporting process, that would create a
metrics reporting process, that would⦠well, you get the idea. The only
way to actually kill these processes is to turn off your networking, then
on MacOS/Linux kill them with `kill -9`. Alternatively you can just reboot.
Anyway, this is a quick release to fix that bug:
* [`51c393f`](https://github.com/npm/npm/commit/51c393feff5f4908c8a9fb02baef505b1f2259be)
[#15237](https://github.com/npm/npm/pull/15237)
Don't launch a metrics sender process if we're running from a metrics
sender process.
([@iarna](https://github.com/iarna))
### v4.1.0 (2016-12-15)
I'm really excited about `npm@4.1.0`. I know, I know, I'm kinda overexcited
in my changelogs, but this one is GREAT. We've got a WHOLE NEW subcommand, I
mean, when was the last time you saw that? YEARS! And we have the beginnings
of usage metrics reporting. Then there's a fix for a really subtle bug that
resulted in `shasum` errors. And then we also have a few more bug fixes and
other improvements.
#### ANONYMOUS METRIC REPORTING
We're adding the ability for you all to help us track the quality of your
experiences using `npm`. Metrics will be sent if you run:
```
npm config set send-metrics true
```
Then `npm` will report to `registry.npmjs.org` the number of successful and
failed installations you've had. The data contains no identifying
information and npm will not attempt to correlate things like IP address
with the metrics being submitted.
Currently we only track number of successful and failed installations. In
the future we would like to find additional metrics to help us better
quantify the quality of the `npm` experience.
* [`190a658`](https://github.com/npm/npm/commit/190a658c4222f6aa904cbc640fc394a5c875e4db)
[#15084](https://github.com/npm/npm/pull/15084)
Add facility for recording and reporting success metrics.
([@iarna](https://github.com/iarna))
* [`87afc8b`](https://github.com/npm/npm/commit/87afc8b466f553fb49746c932c259173de48d0a4)
[npm/npm-registry-client#147](https://github.com/npm/npm-registry-client/pull/148)
`npm-registry-client@7.4.5`:
Add support for sending anonymous CLI metrics.
([@iarna](https://github.com/iarna),
[@sisidovski](https://github.com/sisidovski))
### NPM DOCTOR
<pre>
<u>Check</u> <u>Value</u> <u>Recommendation</u>
npm ping ok
npm -v v4.0.5
node -v v4.6.1 Use node v6.9.2
npm config get registry https://registry.npmjs.org/
which git /Users/rebecca/bin/git
Perms check on cached files ok
Perms check on global node_modules ok
Perms check on local node_modules ok
Checksum cached files ok
</pre>
It's a rare day that we add a new command to `npm`, so I'm excited to
present to you `npm doctor`. It checks for a number of common problems and
provides some recommended solutions. It was put together through the hard
work of [@watilde](https://github.com/watilde).
* [`2359505`](https://github.com/npm/npm/commit/23595055669f76c9fe8f5f1cf4a705c2e794f0dc)
[`0209ee5`](https://github.com/npm/npm/commit/0209ee50448441695fbf9699019d34178b69ba73)
[#14582](https://github.com/npm/npm/pull/14582)
Add new `npm doctor` to give your project environment a health check.
([@watilde](https://github.com/watilde))
#### FIX MAJOR SOURCE OF SHASUM ERRORS
If you've been getting intermittent shasum errors then you'll be pleased to
know that we've tracked down at least one source of them, if not THE source
of them.
* [`87afc8b`](https://github.com/npm/npm/commit/87afc8b466f553fb49746c932c259173de48d0a4)
[#14626](https://github.com/npm/npm/issues/14626)
[npm/npm-registry-client#148](https://github.com/npm/npm-registry-client/pull/148)
`npm-registry-client@7.4.5`:
Fix a bug where an `ECONNRESET` while fetching a package file would result
in a partial download that would be reported as a "shasum mismatch". It
now throws away the partial download and retries it.
([@iarna](https://github.com/iarna))
#### FILE URLS AND NODE.JS 7
When `npm` was formatting `file` URLs we took advantage of `url.format` to
construct them. Node.js 7 changed the behavior in such a way that our use of
`url.format` stopped producing URLs that we could make use of.
The reasons for this have to do with the `file` URL specification and how
invalid (according to the specification) URLs are handled. How this changed
is most easily explained with a table:
<table>
<tr><th></th><th>URL</th><th>Node.js <= 6</th><th><tt>npm</tt>'s understanding</th><th>Node.js 7</th><th><tt>npm</tt>'s understanding</th></tr>
<tr><td>VALID</td><td><tt>file:///abc/def</tt></td><td><tt>file:///abc/def</tt></td><td><tt>/abc/def</tt></td><td><tt>file:///abc/def</tt></td><td><tt>/abc/def</tt></td></tr>
<tr><td>invalid</td><td><tt>file:/abc/def</tt></td><td><tt>file:/abc/def</tt></td><td><tt>/abc/def</tt></td><td><tt>file:///abc/def</tt></td><td><tt>/abc/def</tt></td></tr>
<tr><td>invalid</td><td><tt>file:abc/def</tt></td><td><tt>file:abc/def</tt></td><td><tt>$CWD/abc/def</tt></td><td><tt>file://abc/def</tt></td><td><tt>/def</tt> on the <tt>abc</tt> host</td></tr>
<tr><td>invalid</td><td><tt>file:../abc/def</tt></td><td><tt>file:../abc/def</tt></td><td><tt>$CWD/../abc/def</tt></td><td><tt>file://../abc/def</tt></td><td><tt>/abc/def</tt> on the <tt>..</tt> host</td></tr>
</table>
So the result was that passing a `file` URL that npm had received that used
through Node.js 7's `url.format` changed its meaning as far as `npm` was
concerned. As those kinds of URLs are, per the specification, invalid, how
they should be handled is undefined and so the change in Node.js wasn't a
bug per se.
Our solution is to stop using `url.format` when constructing this kind of
URL.
* [`173935b`](https://github.com/npm/npm/commit/173935b4298e09c4fdcb8f3a44b06134d5aff181)
[#15114](https://github.com/npm/npm/issues/15114)
Stop using `url.format` for relative local dep paths.
([@zkat](https://github.com/zkat))
#### EXTRANEOUS LIFECYCLE SCRIPT EXECUTION WHEN REMOVING
* [`afb1dfd`](https://github.com/npm/npm/commit/afb1dfd944e57add25a05770c0d52d983dc4e96c)
[#15090](https://github.com/npm/npm/pull/15090)
Skip top level lifecycles when uninstalling.
([@iarna](https://github.com/iarna))
#### REFACTORING AND INTERNALS
* [`c9b279a`](https://github.com/npm/npm/commit/c9b279aca0fcb8d0e483e534c7f9a7250e2a9392)
[#15205](https://github.com/npm/npm/pull/15205)
[#15196](https://github.com/npm/npm/pull/15196)
Only have one function that determines which version of a package to use
given a specifier and a list of versions.
([@iarna](https://github.com/iarna),
[@zkat](https://github.com/zkat))
* [`981ce63`](https://github.com/npm/npm/commit/981ce6395e7892dde2591b44e484e191f8625431)
[#15090](https://github.com/npm/npm/pull/15090)
Rewrite prune to use modern npm plumbing.
([@iarna](https://github.com/iarna))
* [`bc4b739`](https://github.com/npm/npm/commit/bc4b73911f58a11b4a2d28b49e24b4dd7365f95b)
[#15089](https://github.com/npm/npm/pull/15089)
Rename functions and variables in the module that computes what changes to
make to your installation.
([@iarna](https://github.com/iarna))
* [`2449f74`](https://github.com/npm/npm/commit/2449f74a202b3efdb1b2f5a83356a78ea9ecbe35)
[#15089](https://github.com/npm/npm/pull/15089)
When computing changes to make to your installation, use a function to add
new actions to take instead of just pushing on a list.
([@iarna](https://github.com/iarna))
#### IMPROVED LOGGING
* [`335933a`](https://github.com/npm/npm/commit/335933a05396258eead139d27eea3f7668ccdfab)
[#15089](https://github.com/npm/npm/pull/15089)
Log when we remove obsolete dependencies in the tree.
([@iarna](https://github.com/iarna))
#### DOCUMENTATION
* [`33ca4e6`](https://github.com/npm/npm/commit/33ca4e6db3c1878cbc40d5e862ab49bb0e82cfb2)
[#15157](https://github.com/npm/npm/pull/15157)
Update `npm cache` docs to use more consistent language
([@JonahMoses](https://github.com/JonahMoses))
#### DEPENDENCY UPDATES
* [`c2d22fa`](https://github.com/npm/npm/commit/c2d22faf916e8260136a1cc95913ca474421c0d3)
[#15215](https://github.com/npm/npm/pull/15215)
`nopt@4.0.1`:
The breaking change is a small tweak to how empty string values are
handled. See the brand-new
[CHANGELOG.md for nopt](https://github.com/npm/nopt/blob/v4.0.1/CHANGELOG.md) for further
details about what's changed in this release!
([@adius](https://github.com/adius),
[@samjonester](https://github.com/samjonester),
[@elidoran](https://github.com/elidoran),
[@helio](https://github.com/helio),
[@silkentrance](https://github.com/silkentrance),
[@othiym23](https://github.com/othiym23))
* [`54d949b`](https://github.com/npm/npm/commit/54d949b05adefffeb7b5b10229c5fe0ccb929ac3)
[npm/lockfile#24](https://github.com/npm/lockfile/pull/24)
`lockfile@1.0.3`:
Handled case where callback was not passed in by the user.
([@ORESoftware](https://github.com/ORESoftware))
* [`54acc03`](https://github.com/npm/npm/commit/54acc0389b39850c0725d0868cb5e61317b57503)
`npmlog@4.0.2`:
Documentation update.
([@helio-frota](https://github.com/helio-frota))
* [`57f4bc1`](https://github.com/npm/npm/commit/57f4bc1150322294c1ea0a287ad0a8e457c151e6)
`osenv@0.1.4`:
Test changes.
([@isaacs](https://github.com/isaacs))
* [`bea1a2d`](https://github.com/npm/npm/commit/bea1a2d0db566560e13ecc1d5f42e55811269c88)
`retry@0.10.1`:
No changes.
([@tim-kos](https://github.com/tim-kos))
* [`6749e39`](https://github.com/npm/npm/commit/6749e395f868109afd97f79d36507e6567dd48fb)
[kapouer/marked-man#9](https://github.com/kapouer/marked-man/pull/9)
`marked-man@0.2.0`:
Add table support.
([@gholk](https://github.com/gholk))
### v4.0.5 (2016-12-01)
It's that time of year! December is upon us, which means y'all are just going to
be doing a lot less, in general, for the next month or so. The "Xmas Chasm", as
we like to call it, has already begun. So for those of you reading it from the
other side: Hi! Welcome back!
This week's release is a relatively small one, involving just a few bugfixes and
dependency upgrades. The CLI team has been busy recently with scoping out
`npm@5`, and starting to do initial spec work for in-scope stuff.
#### BUGFIXES
On to the actual changes!
* [`9776d8f`](https://github.com/npm/npm/commit/9776d8f70a0ea8d921cbbcab7a54e52c15fc455f)
[#15081](https://github.com/npm/npm/pull/15081)
`bundledDependencies` are intended to be left untouched by the installer, as
much as possible -- if they're bundled, we assume that you want to be
particular about the contents of your bundle.
The installer used to have a corner case where existing dependencies that had
bundledDependencies would get clobbered by as the installer moved stuff
around, even though the installer already avoided moving deps that were
themselves bundled. This is now fixed, along with the connected crasher, and
your bundledDeps should be left even more intact than before!
([@iarna](https://github.com/iarna))
* [`fc61c08`](https://github.com/npm/npm/commit/fc61c082122104031ccfb2a888432c9f809a0e8b)
[#15082](https://github.com/npm/npm/pull/15082)
Initialize nodes from bundled dependencies. This should address
[#14427](https://github.com/npm/npm/issues/14427) and related issues, but it's
turned out to be a tremendously difficult issue to reproduce in a test. We
decided to include it even pending tests, because we found the root cause of
the errors.
([@iarna](https://github.com/iarna))
* [`d8471a2`](https://github.com/npm/npm/commit/d8471a294ef848fc893f60e17d6ec6695b975d16)
[#12811](https://github.com/npm/npm/pull/12811)
Consider `devDependencies` when deciding whether to hoist a package. This
should resolve a variety of missing dependency issues some folks were seeing
when `devDependencies` happened to also be dependencies of your
`dependencies`. This often manifested as modules going missing, or only being
installed, after `npm install` was called twice.
([@schmod](https://github.com/schmod))
#### DEPENDENCY UPDATES
* [`5978703`](https://github.com/npm/npm/commit/5978703da8669adae464789b1b15ee71d7f8d55d)
`graceful-fs@4.1.11`:
`EPERM` errors are Windows are now handled more gracefully. Windows users that
tended to see these errors due to, say, an antivirus-induced race condition,
should see them much more rarely, if at all.
([@zkatr](https://github.com/zkat))
* [`85b0174`](https://github.com/npm/npm/commit/85b0174ba9842e8e89f3c33d009e4b4a9e877c7d)
`request@2.79.0`
([@zkat](https://github.com/zkat))
* [`9664d36`](https://github.com/npm/npm/commit/9664d36653503247737630440bc2ff657de965c3)
`tap@8.0.1`
([@zkat](https://github.com/zkat))
#### MISCELLANEOUS
* [`f0f7b0f`](https://github.com/npm/npm/commit/f0f7b0fd025daa2b69994130345e6e8fdaaa0304)
[#15083](https://github.com/npm/npm/pull/15083)
Removed dead code.
([@iarna](https://github.com/iarna))
* [`bc32afe`](https://github.com/npm/npm/commit/bc32afe4d12e3760fb5a26466dc9c26a5a2981d5) [`c8a22fe`](https://github.com/npm/npm/commit/c8a22fe5320550e09c978abe560b62ce732686f4) [`db2666d`](https://github.com/npm/npm/commit/db2666d8c078fc69d0c02c6a3de9b31be1e995e9)
[#15085](https://github.com/npm/npm/pull/15085)
Change some network tests so they can run offline.
([@iarna](https://github.com/iarna))
* [`744a39b`](https://github.com/npm/npm/commit/744a39b836821b388ad8c848bd898c1d006689a9)
[#15085](https://github.com/npm/npm/pull/15085)
Make Node.js tests compatible with Windows.
([@iarna](https://github.com/iarna))
### v4.0.3 (2016-11-17)
Hey you all, we've got a couple of bug fixes for you, a slew of
documentation improvements and some improvements to our CI environment. I
know we just got v4 out the door, but the CLI team is already busy planning
v5. We'll have more for you in early December.
#### BUG FIXES
* [`45d40d9`](https://github.com/npm/npm/commit/45d40d96d2cd145f1e36702d6ade8cd033f7f332)
[`ba2adc2`](https://github.com/npm/npm/commit/ba2adc2e822d5e75021c12f13e3f74ea2edbde32)
[`1dc8908`](https://github.com/npm/npm/commit/1dc890807bd78a1794063688af31287ed25a2f06)
[`2ba19ee`](https://github.com/npm/npm/commit/2ba19ee643d612d103cdd8f288d313b00d05ee87)
[#14403](https://github.com/npm/npm/pull/14403)
Fix a bug where a scoped