1+ ### v4.1.1 (2016-12-16)
2+
3+ This fixes a bug in the metrics reporting where, if you had enabled it then
4+ installs would create a metrics reporting process, that would create a
5+ metrics reporting process, that would… well, you get the idea. The only
6+ way to actually kill these processes is to turn off your networking, then
7+ on MacOS/Linux kill them with ` kill -9 ` . Alternatively you can just reboot.
8+
9+ Anyway, this is a quick release to fix that bug:
10+
11+ * [ ` 51c393f ` ] ( https://github.com/npm/npm/commit/51c393feff5f4908c8a9fb02baef505b1f2259be )
12+ [ #15237 ] ( https://github.com/npm/npm/pull/15237 )
13+ Don't launch a metrics sender process if we're runnning from a metrics
14+ sender process.
15+ ([ @iarna ] ( https://github.com/iarna ) )
16+
17+ ### v4.1.0 (2016-12-15)
18+
19+ I'm really excited about ` npm@4.1.0 ` . I know, I know, I'm kinda overexcited
20+ in my changelogs, but this one is GREAT. We've got a WHOLE NEW subcommand, I
21+ mean, when was the last time you saw that? YEARS! And we have the beginnings
22+ of usage metrics reporting. Then there's a fix for a really subtle bug that
23+ resulted in ` shasum ` errors. And then we also have a few more bug fixes and
24+ other improvements.
25+
26+ #### ANONYMOUS METRIC REPORTING
27+
28+ We're adding the ability for you all to help us track the quality of your
29+ experiences using ` npm ` . Metrics will be sent if you run:
30+
31+ ```
32+ npm config set send-metrics true
33+ ```
34+
35+ Then ` npm ` will report to ` registry.npmjs.org ` the number of successful and
36+ failed installations you've had. The data contains no identifying
37+ information and npm will not attempt to correlate things like IP address
38+ with the metrics being submitted.
39+
40+ Currently we only track number of successful and failed installations. In
41+ the future we would like to find additional metrics to help us better
42+ quantify the quality of the ` npm ` experience.
43+
44+ * [ ` 190a658 ` ] ( https://github.com/npm/npm/commit/190a658c4222f6aa904cbc640fc394a5c875e4db )
45+ [ #15084 ] ( https://github.com/npm/npm/pull/15084 )
46+ Add facility for recording and reporting success metrics.
47+ ([ @iarna ] ( https://github.com/iarna ) )
48+ * [ ` 87afc8b ` ] ( https://github.com/npm/npm/commit/87afc8b466f553fb49746c932c259173de48d0a4 )
49+ [ npm/npm-registry-client #147 ] ( https://github.com/npm/npm-registry-client/pull/148 )
50+ ` npm-registry-client@7.4.5 ` :
51+ Add support for sending anonymous CLI metrics.
52+ ([ @iarna ] ( https://github.com/iarna ) ,
53+ [ @sisidovski ] ( https://github.com/sisidovski ) )
54+
55+ ### NPM DOCTOR
56+
57+ <pre >
58+ <u >Check</u > <u >Value</u > <u >Recommendation</u >
59+ npm ping ok
60+ npm -v v4.0.5
61+ node -v v4.6.1 Use node v6.9.2
62+ npm config get registry https://registry.npmjs.org/
63+ which git /Users/rebecca/bin/git
64+ Perms check on cached files ok
65+ Perms check on global node_modules ok
66+ Perms check on local node_modules ok
67+ Checksum cached files ok
68+ </pre >
69+
70+ It's a rare day that we add a new command to ` npm ` , so I'm excited to
71+ present to you ` npm doctor ` . It checks for a number of common problems and
72+ provides some recommended solutions. It was put together through the hard
73+ work of [ @watilde ] ( https://github.com/watilde ) .
74+
75+ * [ ` 2359505 ` ] ( https://github.com/npm/npm/commit/23595055669f76c9fe8f5f1cf4a705c2e794f0dc )
76+ [ ` 0209ee5 ` ] ( https://github.com/npm/npm/commit/0209ee50448441695fbf9699019d34178b69ba73 )
77+ [ #14582 ] ( https://github.com/npm/npm/pull/14582 )
78+ Add new ` npm doctor ` to give your project environment a health check.
79+ ([ @watilde ] ( https://github.com/watilde ) )
80+
81+ #### FIX MAJOR SOURCE OF SHASUM ERRORS
82+
83+ If you've been getting intermittent shasum errors then you'll be pleased to
84+ know that we've tracked down at least one source of them, if not THE source
85+ of them.
86+
87+ * [ ` 87afc8b ` ] ( https://github.com/npm/npm/commit/87afc8b466f553fb49746c932c259173de48d0a4 )
88+ [ #14626 ] ( https://github.com/npm/npm/issues/14626 )
89+ [ npm/npm-registry-client #148 ] ( https://github.com/npm/npm-registry-client/pull/148 )
90+ ` npm-registry-client@7.4.5 ` :
91+ Fix a bug where an ` ECONNRESET ` while fetching a package file would result
92+ in a partial download that would be reported as a "shasum mismatch". It
93+ now throws away the partial download and retries it.
94+ ([ @iarna ] ( https://github.com/iarna ) )
95+
96+ #### FILE URLS AND NODE.JS 7
97+
98+ When ` npm ` was formatting ` file ` URLs we took advantage of ` url.format ` to
99+ construct them. Node.js 7 changed the behavior in such a way that our use of
100+ ` url.format ` stopped producing URLs that we could make use of.
101+
102+ The reasons for this have to do with the ` file ` URL specification and how
103+ invalid (according to the specification) URLs are handled. How this changed
104+ is most easily explained with a table:
105+
106+ <table >
107+ <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 >
108+ <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 >
109+ <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 >
110+ <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 >
111+ <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 >
112+ </table >
113+
114+ So the result was that passing a ` file ` URL that npm had received that used
115+ through Node.js 7's ` url.format ` changed its meaning as far as ` npm ` was
116+ concerned. As those kinds of URLs are, per the specification, invalid, how
117+ they should be handled is undefined and so the change in Node.js wasn't a
118+ bug per se.
119+
120+ Our solution is to stop using ` url.format ` when constructing this kind of
121+ URL.
122+
123+ * [ ` 173935b ` ] ( https://github.com/npm/npm/commit/173935b4298e09c4fdcb8f3a44b06134d5aff181 )
124+ [ #15114 ] ( https://github.com/npm/npm/issues/15114 )
125+ Stop using ` url.format ` for relative local dep paths.
126+ ([ @zkat ] ( https://github.com/zkat ) )
127+
128+ #### EXTRANEOUS LIFECYCLE SCRIPT EXECUTION WHEN REMOVING
129+
130+ * [ ` afb1dfd ` ] ( https://github.com/npm/npm/commit/afb1dfd944e57add25a05770c0d52d983dc4e96c )
131+ [ #15090 ] ( https://github.com/npm/npm/pull/15090 )
132+ Skip top level lifecycles when uninstalling.
133+ ([ @iarna ] ( https://github.com/iarna ) )
134+
135+ #### REFACTORING AND INTERNALS
136+
137+ * [ ` c9b279a ` ] ( https://github.com/npm/npm/commit/c9b279aca0fcb8d0e483e534c7f9a7250e2a9392 )
138+ [ #15205 ] ( https://github.com/npm/npm/pull/15205 )
139+ [ #15196 ] ( https://github.com/npm/npm/pull/15196 )
140+ Only have one function that determines which version of a package to use
141+ given a specifier and a list of versions.
142+ ([ @iarna ] ( https://github.com/iarna ) ,
143+ [ @zkat ] ( https://github.com/zkat ) )
144+
145+ * [ ` 981ce63 ` ] ( https://github.com/npm/npm/commit/981ce6395e7892dde2591b44e484e191f8625431 )
146+ [ #15090 ] ( https://github.com/npm/npm/pull/15090 )
147+ Rewrite prune to use modern npm plumbing.
148+ ([ @iarna ] ( https://github.com/iarna ) )
149+
150+ * [ ` bc4b739 ` ] ( https://github.com/npm/npm/commit/bc4b73911f58a11b4a2d28b49e24b4dd7365f95b )
151+ [ #15089 ] ( https://github.com/npm/npm/pull/15089 )
152+ Rename functions and variables in the module that computes what changes to
153+ make to your installation.
154+ ([ @iarna ] ( https://github.com/iarna ) )
155+
156+ * [ ` 2449f74 ` ] ( https://github.com/npm/npm/commit/2449f74a202b3efdb1b2f5a83356a78ea9ecbe35 )
157+ [ #15089 ] ( https://github.com/npm/npm/pull/15089 )
158+ When computing changes to make to your installation, use a function to add
159+ new actions to take instead of just pushing on a list.
160+ ([ @iarna ] ( https://github.com/iarna ) )
161+
162+ #### IMPROVED LOGGING
163+
164+ * [ ` 335933a ` ] ( https://github.com/npm/npm/commit/335933a05396258eead139d27eea3f7668ccdfab )
165+ [ #15089 ] ( https://github.com/npm/npm/pull/15089 )
166+ Log when we remove obsolete dependencies in the tree.
167+ ([ @iarna ] ( https://github.com/iarna ) )
168+
169+ #### DOCUMENTATION
170+
171+ * [ ` 33ca4e6 ` ] ( https://github.com/npm/npm/commit/33ca4e6db3c1878cbc40d5e862ab49bb0e82cfb2 )
172+ [ #15157 ] ( https://github.com/npm/npm/pull/15157 )
173+ Update ` npm cache ` docs to use more consistent language
174+ ([ @JonahMoses ] ( https://github.com/JonahMoses ) )
175+
176+ #### DEPENDENCY UPDATES
177+
178+ * [ ` c2d22fa ` ] ( https://github.com/npm/npm/commit/c2d22faf916e8260136a1cc95913ca474421c0d3 )
179+ [ #15215 ] ( https://github.com/npm/npm/pull/15215 )
180+ ` nopt@4.0.1 ` :
181+ The breaking change is a small tweak to how empty string values are
182+ handled. See the brand-new
183+ [ CHANGELOG.md for nopt] ( https://github.com/npm/nopt/blob/v4.0.1/CHANGELOG.md ) for further
184+ details about what's changed in this release!
185+ ([ @adius ] ( https://github.com/adius ) ,
186+ [ @samjonester ] ( https://github.com/samjonester ) ,
187+ [ @elidoran ] ( https://github.com/elidoran ) ,
188+ [ @helio ] ( https://github.com/helio ) ,
189+ [ @silkentrance ] ( https://github.com/silkentrance ) ,
190+ [ @othiym23 ] ( https://github.com/othiym23 ) )
191+ * [ ` 54d949b ` ] ( https://github.com/npm/npm/commit/54d949b05adefffeb7b5b10229c5fe0ccb929ac3 )
192+ [ npm/lockfile #24 ] ( https://github.com/npm/lockfile/pull/24 )
193+ ` lockfile@1.0.3 ` :
194+ Handled case where callback was not passed in by the user.
195+ ([ @ORESoftware ] ( https://github.com/ORESoftware ) )
196+ * [ ` 54acc03 ` ] ( https://github.com/npm/npm/commit/54acc0389b39850c0725d0868cb5e61317b57503 )
197+ ` npmlog@4.0.2 ` :
198+ Documentation update.
199+ ([ @helio-frota ] ( https://github.com/helio-frota ) )
200+ * [ ` 57f4bc1 ` ] ( https://github.com/npm/npm/commit/57f4bc1150322294c1ea0a287ad0a8e457c151e6 )
201+ ` osenv@0.1.4 ` :
202+ Test changes.
203+ ([ @isaacs ] ( https://github.com/isaacs ) )
204+ * [ ` bea1a2d ` ] ( https://github.com/npm/npm/commit/bea1a2d0db566560e13ecc1d5f42e55811269c88 )
205+ ` retry@0.10.1 ` :
206+ No changes.
207+ ([ @tim-kos ] ( https://github.com/tim-kos ) )
208+ * [ ` 6749e39 ` ] ( https://github.com/npm/npm/commit/6749e395f868109afd97f79d36507e6567dd48fb )
209+ [ kapouer/marked-man #9 ] ( https://github.com/kapouer/marked-man/pull/9 )
210+ ` marked-man@0.2.0 ` :
211+ Add table support.
212+ ([ @gholk ] ( https://github.com/gholk ) )
213+
1214### v4.0.5 (2016-12-01)
2215
3216It's that time of year! December is upon us, which means y'all are just going to
@@ -49,13 +262,13 @@ On to the actual changes!
49262 ` EPERM ` errors are Windows are now handled more gracefully. Windows users that
50263 tended to see these errors due to, say, an antivirus-induced race condition,
51264 should see them much more rarely, if at all.
52- ([ @Kat Marchán ] (https://github.com/Kat Marchán ))
265+ ([ @zkatr ] ( https://github.com/zkat ) )
53266* [ ` 85b0174 ` ] ( https://github.com/npm/npm/commit/85b0174ba9842e8e89f3c33d009e4b4a9e877c7d )
54267 ` request@2.79.0 `
55- ([ @Kat Marchán ] (https://github.com/Kat Marchán ))
268+ ([ @zkat ] ( https://github.com/zkat ) )
56269* [ ` 9664d36 ` ] ( https://github.com/npm/npm/commit/9664d36653503247737630440bc2ff657de965c3 )
57270 ` tap@8.0.1 `
58- ([ @Kat Marchán ] (https://github.com/Kat Marchán ))
271+ ([ @zkat ] ( https://github.com/zkat ) )
59272
60273#### MISCELLANEOUS
61274
@@ -596,6 +809,7 @@ sending `Npm-Scope` and `Npm-In-CI` headers in outgoing requests.
596809
597810* [ ` 846f61c ` ] ( https://github.com/npm/npm/commit/846f61c1dd4a033f77aa736ab01c27ae6724fe1c )
598811 [ npm/npm-registry-client #145 ] ( https://github.com/npm/npm-registry-client/pull/145 )
812+ [ npm/npm-registry-client #147 ] ( https://github.com/npm/npm-registry-client/pull/147 )
599813 ` npm-registry-client@7.3.0 ` :
600814 * Allow npm to add headers to outgoing requests.
601815 * Add ` Npm-In-CI ` header that reports whether we're running in CI.
0 commit comments