I haven't looked over the changelog/breaking changes for 4.0.0, so this may not encompass everything there, but there are a few changes you need to be aware of. How hard it is depends on which functions you use currently, but I doubt it would take more than an hour of find-replace work. They are listed here : https://github.com/lodash/lodash/wiki/Migrating The ones that affected me the most were the changes to the overloaded _.first, _.last, etc, but YMMV.
Re:Lodash 4.0.0 is out
by krat0sprakhar on Tuesday January 12, 2016 @08:00PM
(#10891596)
I've done similar refactorings in the past (somehow my fingers only remember `npm install underscore`) and for me it has always been a drop-in replacement. However, as others have pointed out, it does depend on how much functions you are using and from my experience the whole thing should not take long.
Re:Lodash 4.0.0 is out
by kevindeasis on Tuesday January 12, 2016 @07:42PM
(#10891524)
I'll put this here just in case no one comments.
If I'm correct, you're showing this as a counter example to prove that the two have incompatible APIs and are thus LoDash can't be used ad a drop in replacement. However, Lodash does alias it's 'forEach' function with 'each', so this wouldn't be an issue?
underscore.each has an optional 3rd parameter (context). lodash.each does not. If you depend on that 3rd parameter, you will be in a world of pain if you drop-in lodash. In fact you'd be better off if there was no alias because you would catch the problem sooner and have to think about the API differences when fixing it.
To be fair, that context parameter has only just been removed as part of 4.0.0. Instead they recommend you change your code to be of the form:
_.each(collection, _.bind(function, context))
Which actually seems a lot more correct than some arbitrary context parameterHow is it arbitrary? It's part of the ES spec.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
I'm honestly curious why this is being removed?
Ah, I actually didn't realise this was the case, I've always used `.bind(this)` for this kind of thing.
Re:Lodash 4.0.0 is out
by tdumitrescu on Tuesday January 12, 2016 @08:58PM
(#10891841)
Yeah, each and forEach are aliases in both lodash and underscore.
Lodash v1 was a drop-in Underscore replacement.
Lodash v2 was not but offered an lodash.underscore.js build.
Lodash v3 dropped the compat build in favor of using individual lodash modules until you're able to transition
Lodash v4 continues the view of v3
I currently use underscore 1.8.3. Can I just swap lodash in, or is refactoring involved? I know it's a fork, and I want to move over, but was curious if anyone know off the top of their heads if a lot of work as involved.