Skip to content

cozmo/lodash

 
 

Repository files navigation

Lo-Dash v1.0.0-rc.3

build status

An alternative to Underscore.js, delivering consistency, customization, performance, and extra features.

Download

Dive in

We’ve got API docs, benchmarks, and unit tests.

For a list of upcoming features, check out our roadmap.

Screencasts

For more information check out these screencasts over Lo-Dash:

Features

Support

Lo-Dash has been tested in at least Chrome 524, Firefox 118, IE 6-10, Opera 9.25-12, Safari 3-6, Node.js 0.4.8-0.8.17, Narwhal 0.3.2, RingoJS 0.8, and Rhino 1.7RC5.

Custom builds

Custom builds make it easy to create lightweight versions of Lo-Dash containing only the methods you need. To top it off, we handle all method dependency and alias mapping for you.

  • Backbone builds, with only methods required by Backbone, may be created using the backbone modifier argument.
lodash backbone
  • CSP builds, supporting default Content Security Policy restrictions, may be created using the csp modifier argument. The csp modifier is an alais of the mobile modifier. Chrome extensions will require sandboxing or the use of either the csp, mobile, or underscore build.
lodash csp
  • Legacy builds, tailored for older browsers without ES5 support, may be created using the legacy modifier argument.
lodash legacy
  • Mobile builds, with IE < 9 bug fixes and method compilation removed, may be created using the mobile modifier argument.
lodash mobile
  • Strict builds, with _.bindAll, _.defaults, and _.extend in strict mode, may be created using the strict modifier argument.
lodash strict
  • Underscore builds, tailored for projects already using Underscore, may be created using the underscore modifier argument.
lodash underscore

Custom builds may be created using the following commands:

  • Use the category argument to pass comma separated categories of methods to include in the build.
    Valid categories (case-insensitive) are “arrays”, “chaining”, “collections”, “functions”, “objects”, and “utilities”.
lodash category=collections,functions
lodash category="collections, functions"
  • Use the exports argument to pass comma separated names of ways to export the LoDash function.
    Valid exports are “amd”, “commonjs”, “global”, “node”, and “none”.
lodash exports=amd,commonjs,node
lodash exports="amd, commonjs, node"
  • Use the iife argument to specify code to replace the immediately-invoked function expression that wraps Lo-Dash.
lodash iife="!function(window,undefined){%output%}(this)"
  • Use the include argument to pass comma separated method/category names to include in the build.
lodash include=each,filter,map
lodash include="each, filter, map"
  • Use the minus argument to pass comma separated method/category names to remove from those included in the build.
lodash underscore minus=result,shuffle
lodash underscore minus="result, shuffle"
  • Use the plus argument to pass comma separated method/category names to add to those included in the build.
lodash backbone plus=random,template
lodash backbone plus="random, template"
  • Use the template argument to pass the file path pattern used to match template files to precompile.
lodash template="./*.jst"
  • Use the settings argument to pass the template settings used when precompiling templates.
lodash settings="{interpolate:/\{\{([\s\S]+?)\}\}/g}"
  • Use the moduleId argument to specify the AMD module ID of Lo-Dash, which defaults to “lodash”, used by precompiled templates.
lodash moduleId="underscore"

All arguments, except legacy with csp or mobile, may be combined.
Unless specified by -o or --output, all files created are saved to the current working directory.

The following options are also supported:

  • -c, --stdout ......... Write output to standard output
  • -d, --debug ........... Write only the non-minified development output
  • -h, --help ............. Display help information
  • -m, --minify ......... Write only the minified production output
  • -o, --output ......... Write output to a given path/filename
  • -p, --source-map .. Generate a source map for the minified output
  • -s, --silent ......... Skip status updates normally logged to the console
  • -V, --version ....... Output current version of Lo-Dash

The lodash command-line utility is available when Lo-Dash is installed as a global package (i.e. npm install -g lodash).

Installation and usage

In browsers:

<script src="lodash.js"></script>

Using npm:

npm install lodash

npm install -g lodash
npm link lodash

To avoid potential issues, update npm before installing Lo-Dash:

npm install npm -g

In Node.js and RingoJS v0.8.0+:

var _ = require('lodash');

// or as a drop-in replacement for Underscore
var _ = require('lodash/lodash.underscore');

Note: If Lo-Dash is installed globally, run npm link lodash in your project’s root directory before requiring it.

In RingoJS v0.7.0-:

var _ = require('lodash')._;

In Rhino:

load('lodash.js');

In an AMD loader like RequireJS:

require({
  'paths': {
    'underscore': 'path/to/lodash'
  }
},
['underscore'], function(_) {
  console.log(_.VERSION);
});

Release Notes

v1.0.0-rc.3

Compatibility Warnings

  • Made _#join, _#pop, and _#shift wrapper methods return unwrapped values
  • Made “Functions” methods wrapper counterparts return wrapped values
  • Removed _.chain and _#chain methods

Changes

  • Added _.cloneDeep alias of _.clone(…, true)
  • Added _.once to the backbone build method dependencies
  • Ensured backbone builds implement Underscore’s chaining behavior
  • Ensured the settings=… build option doesn’t clobber the default moduleId
  • Ensured Lo-Dash’s npm package installation avoids erroring when no other modules have been globally installed
  • Made compiled templates loaded via AMD use the Lo-Dash module for their _ references
  • Removed the “Collections” method _.forEach dependency from “Arrays” method _.intersection
  • Optimized _.isArray and _.isFunction fallbacks as well as
    _.intersection, _.isDate, _.isRegExp, _.reduce, _.reduceRight, _.union, and _.uniq

v1.0.0-rc.2

  • Specified more method chaining behaviors
  • Updated underscore build compatibility to v1.4.3

v1.0.0-rc.1

Compatibility Warnings

  • Made _(…) intuitively chain without needing to call _#chain
  • Made _.isEqual equate arguments objects to similar Object objects
  • Made _.clone copy the enumerable properties of arguments objects and objects
    created by constructors other than Object are cloned to plain Object objects

Changes

  • Ensure Lo-Dash runs in the JS engine embedded in Adobe products
  • Ensured _.reduce and _.reduceRight pass the correct number of callback arguments
  • Ensured _.throttle nulls the timeoutId
  • Made deep _.clone more closely follow the structured clone algorithm and copy array properties assigned by RegExp#exec
  • Optimized compiled templates in Firefox
  • Optimized _.forEach, _.forOwn, _.isNumber, and _.isString
  • Simplified iteratorTemplate

The full changelog is available here.

BestieJS

Lo-Dash is part of the BestieJS “Best in Class” module collection. This means we promote solid browser/environment support, ES5 precedents, unit testing, and plenty of documentation.

Author

Contributors

About

An alternative to Underscore.js, delivering consistency, customization, performance, and extra features.

Resources

License

Stars

Watchers

Forks

Packages

No packages published