|
| 1 | +### v3.7.1 (2016-02-01): |
| 2 | + |
| 3 | +Super quick Monday patch on last week's release. |
| 4 | + |
| 5 | +If you ever wondered why we release things to the `npm@next` tag for a week |
| 6 | +before promoting them to `npm@latest`, this is it! |
| 7 | + |
| 8 | +#### RELEASE TRAIN VINDICATED (again) |
| 9 | + |
| 10 | +* [`adcaf04`](adcaf047811dcc475ab1984fc93fe34540fc03d7) |
| 11 | + [#11349](https://github.com/npm/npm/issues/11349) |
| 12 | + Revert last weeks change to use JSON clone instead of `lodash.cloneDeep`. |
| 13 | + ([@iarna](https://github.com/iarna)) |
| 14 | + |
| 15 | +### v3.7.0 (2016-01-20): |
| 16 | + |
| 17 | +Hi all! This week brings us some important performance improvements, |
| 18 | +support for git submodules(!) and a bunch of bug fixes. |
| 19 | + |
| 20 | +#### PERFORMANCE |
| 21 | + |
| 22 | +`gauge`, the module responsible for drawing `npm`'s progress bars, had an |
| 23 | +embarrassing bug in its debounce implementation that resulted in it, on many |
| 24 | +systems, actually being _slower_ than if it hadn't been debouncing. This was |
| 25 | +due to it destroying and then creating a timer object any time it got an |
| 26 | +update while waiting on its minimum update period to elapse. This only was |
| 27 | +a measurable slowdown when sending thousands of updates a second, but |
| 28 | +unfortunately parts of `npm`'s logging do exactly that. This has been patched |
| 29 | +to eliminate that churn, and our testing shows the progress bar as being |
| 30 | +eliminated as a source of slow down. |
| 31 | + |
| 32 | +Meanwhile, `are-we-there-yet` is the module that tracks just how complete |
| 33 | +our big asynchronous install process is. [@STRML](https://github.com/STRML) |
| 34 | +spent some time auditing its source and made a few smaller performance |
| 35 | +improvements to it. Most impactful was eliminating a bizarre bit of code |
| 36 | +that was both binding to AND closing over the current object. I don't have |
| 37 | +any explanation for how that crept in. =D |
| 38 | + |
| 39 | +* [`c680fa9`](https://github.com/npm/npm/commit/c680fa9f8135759eb5512f4b86e47fa265733f79) |
| 40 | + `[email protected]`: New `are-we-there-yet` with performance patches from |
| 41 | + [@STRML](https://github.com/STRML). New `gauge` with timer churn |
| 42 | + performance patch. |
| 43 | + ([@iarna](https://github.com/iarna)) |
| 44 | + |
| 45 | +We were also using `lodash`'s `cloneDeep` on `package.json` data which is |
| 46 | +definitely overkill, seeing as `package.json` data has all the restrictions |
| 47 | +of being `json`. The fix for this is just swapping that out for something |
| 48 | +that does a pair of `JSON.stringify`/`JSON.parse`, which is distinctly more |
| 49 | +speedy. |
| 50 | + |
| 51 | +* [`1d1ea7e`](https://github.com/npm/npm/commit/1d1ea7eeb958034878eb6573149aeecc686888d3) |
| 52 | + [#11306](https://github.com/npm/npm/pull/11306) |
| 53 | + Use JSON clone instead of `lodash.cloneDeep`. |
| 54 | + ([@STRML](https://github.com/STRML)) |
| 55 | + |
| 56 | +#### NEW FEATURE: GIT SUBMODULE SUPPORT |
| 57 | + |
| 58 | +Long, long requested– the referenced issue is from 2011– we're finally |
| 59 | +getting rudimentary git submodule support. |
| 60 | + |
| 61 | +* [`39dea9c`](https://github.com/npm/npm/commit/39dea9ca4216c6ea628f5ca47d2b34a4b251a1ed) |
| 62 | + [#1876](https://github.com/npm/npm/issues/1876) |
| 63 | + Add support for git submodules in git remotes. This is a fairly simple |
| 64 | + approach, which does not leverage the git caching mechanism to cache |
| 65 | + submodules. It also doesn't provide a means to disable automatic |
| 66 | + initialization, e.g. via a setting in the `.gitmodules` file. |
| 67 | + ([@gagern](https://github.com/gagern)) |
| 68 | + |
| 69 | +#### ROBUSTNESS |
| 70 | + |
| 71 | +* [`5dec02a`](https://github.com/npm/npm/commit/5dec02a3d0e82202c021e27aff9d006283fdc25a) |
| 72 | + [#10347](https://github.com/npm/npm/issues/10347) |
| 73 | + There is an obscure feature that lets you monkey-patch npm when it starts |
| 74 | + up. If the module being required with this feature failed, it would |
| 75 | + previously just make `npm` error out– this reduces that to a warning. |
| 76 | + ([@evanlucas](https://github.com/evanlucas)) |
| 77 | + |
| 78 | +#### BUG FIXES |
| 79 | + |
| 80 | +* [`9ab8b8d`](https://github.com/npm/npm/commit/9ab8b8d047792612ae7f9a6079745d51d5283a53) |
| 81 | + [#10820](https://github.com/npm/npm/issues/10820) |
| 82 | + Fix a bug with `npm ls` where if you asked for ONLY production dependencies in output |
| 83 | + it would exclude dependencies that were BOTH production AND development dependencies. |
| 84 | + ([@davidvgalbraith](https://github.com/davidvgalbraith)) |
| 85 | +* [`6803fed`](https://github.com/npm/npm/commit/6803fedadb8f9b36cd85f7338ecf75d1d183c833) |
| 86 | + [#8982](https://github.com/npm/npm/issues/8982) |
| 87 | + Fix a bug where, under some circumstances, if you had a path that |
| 88 | + contained the name of a package being installed somewhere in it, `npm` |
| 89 | + would incorrectly refuse to run lifecycle scripts. |
| 90 | + ([@elvanja](https://github.com/elvanja)) |
| 91 | +* [`3eae40b`](https://github.com/npm/npm/commit/3eae40b7a681aa067dfe4fea8c9a76da5b508b48) |
| 92 | + [#9253](https://github.com/npm/npm/issues/9253) |
| 93 | + Fix a bug where, when running lifecycle scripts, if the Node.js binary you ran |
| 94 | + `npm` with wasn't in your `PATH`, `npm` wouldn't use it to run your scripts. |
| 95 | + ([@segrey](https://github.com/segrey)) |
| 96 | +* [`61daa6a`](https://github.com/npm/npm/commit/61daa6ae8cbc041d3a0d8a6f8f268b47dd8176eb) |
| 97 | + [#11014](https://github.com/npm/npm/issues/11014) |
| 98 | + Fix a bug where running `rimraf node_modules/<package>` followed by `npm |
| 99 | + rm --save <package>` would fail. `npm` now correctly removes the module |
| 100 | + from your `package.json` even though it doesn't exist on disk. |
| 101 | + ([@davidvgalbraith](https://github.com/davidvgalbraith)) |
| 102 | +* [`a605586`](https://github.com/npm/npm/commit/a605586df134ee97c95f89c4b4bd6bc73f7aa439) |
| 103 | + [#9679](https://github.com/npm/npm/issues/9679) |
| 104 | + Fix a bug where `npm install --save git+https://…` would save a `https://` |
| 105 | + url to your `package.json` which was a problem because `npm` wouldn't then |
| 106 | + know that it was a git repo. |
| 107 | + ([@gagern](https://github.com/gagern)) |
| 108 | +* [`bbdc700`](https://github.com/npm/npm/commit/bbdc70024467c365cc4e06b8410947c04b6f145b) |
| 109 | + [#10063](https://github.com/npm/npm/issues/10063) |
| 110 | + Fix a bug where `npm` would change the order of array properties in the |
| 111 | + `package.json` files of dependencies. `npm` adds a bunch of stuff to |
| 112 | + `package.json` files in your `node_modules` folder for debugging and |
| 113 | + bookkeeping purposes. As a part of this process it sorts the object to |
| 114 | + reduce file churn when it does updates. This fixes a bug where the arrays |
| 115 | + in the object were also getting sorted. This wasn't a problem for |
| 116 | + properties that `npm` itself maintains, but _is_ a problem for properties |
| 117 | + used by other packages. |
| 118 | + ([@substack](https://github.com/substack)) |
| 119 | + |
| 120 | +#### DOCS IMPROVEMENTS |
| 121 | + |
| 122 | +* [`2609a29`](https://github.com/npm/npm/commit/2609a2950704f577ac888668e81ba514568fab44) |
| 123 | + [#11273](https://github.com/npm/npm/pull/11273) |
| 124 | + Include an example of viewing package version history in the `npm view` documentation. |
| 125 | + ([@vedatmahir](https://github.com/vedatmahir)) |
| 126 | +* [`719ea9c`](https://github.com/npm/npm/commit/719ea9c45a5c3233f3afde043b89824aad2df0a7) |
| 127 | + [#11272](https://github.com/npm/npm/pull/11272) |
| 128 | + Fix typographical issue in `npm update` documentation. |
| 129 | + ([@jonathanp](https://github.com/jonathanp)) |
| 130 | +* [`cb9df5a`](https://github.com/npm/npm/commit/cb9df5a37091e06071d8704b629e7ebaa41c37fe) |
| 131 | + [#11215](https://github.com/npm/npm/pull/11215) |
| 132 | + Do not call `SEE LICENSE IN <filename>` an _SPDX expression_, as it's not. |
| 133 | + ([@kemitchell](https://github.com/kemitchell)) |
| 134 | +* [`f427934`](https://github.com/npm/npm/commit/f4279346c368da4bca09385f773e8eed1d389e5e) |
| 135 | + [#11196](https://github.com/npm/npm/pull/11196) |
| 136 | + Correct the `package.json` examples in the `npm update` documentation to actually be |
| 137 | + valid JSON and not just JavaScript object literals. |
| 138 | + ([@s100](https://github.com/s100)) |
| 139 | + |
| 140 | +#### DEPENDENCY UPDATES |
| 141 | + |
| 142 | +* [`a7b2407`](https://github.com/npm/npm/commit/a7b24074cb59a1ab17c0d8eff1498047e6a123e5) |
| 143 | + `[email protected]`: New features and interface agnostic refactoring. |
| 144 | + ([@tim-kos](https://github.com/tim-kos)) |
| 145 | +* [`220fc77`](https://github.com/npm/npm/commit/220fc7702ae3e5d601dfefd3e95c14e9b32327de) |
| 146 | + |
| 147 | + A bunch of small bug fixes and module updates. |
| 148 | + ([@simov](https://github.com/simov)) |
| 149 | +* [`9e5c84f`](https://github.com/npm/npm/commit/9e5c84f1903748897e54f8ff099729ff744eab0f) |
| 150 | + |
| 151 | + Update `isexe` and fix bug in `pathExt`, in which files without extensions |
| 152 | + would sometimes be preferred to files with extensions on Windows, even though |
| 153 | + those without extensions aren't executable. |
| 154 | + `pathExt` is a list of extensions that are considered executable (exe, cmd, |
| 155 | + bat, com on Windows). |
| 156 | + ([@isaacs](https://github.com/isaacs)) |
| 157 | +* [`375b9c4`](https://github.com/npm/npm/commit/375b9c42fe0c6de47ac2f92527354b2ea79b7968) |
| 158 | + `[email protected]`: Minor doc formatting fixes. |
| 159 | + ([@isaacs](https://github.com/isaacs)) |
| 160 | +* [`ef1971e`](https://github.com/npm/npm/commit/ef1971e6270c2bc72e6392b51a8b84f52708f7e7) |
| 161 | + |
| 162 | + Misc minor code cleanup. No functional changes. |
| 163 | + ([@jdalton](https://github.com/jdalton)) |
| 164 | + |
1 | 165 | ### v3.6.0 (2016-01-20):
|
2 | 166 |
|
3 | 167 | Hi all! This is a bigger release, in part 'cause we didn't have one last
|
|
0 commit comments