You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
3.6 KiB
147 lines
3.6 KiB
# lazy-cache [![NPM version](https://img.shields.io/npm/v/lazy-cache.svg?style=flat)](https://www.npmjs.com/package/lazy-cache) [![NPM downloads](https://img.shields.io/npm/dm/lazy-cache.svg?style=flat)](https://npmjs.org/package/lazy-cache) [![Build Status](https://img.shields.io/travis/jonschlinkert/lazy-cache.svg?style=flat)](https://travis-ci.org/jonschlinkert/lazy-cache) |
|
|
|
> Cache requires to be lazy-loaded when needed. |
|
|
|
## Install |
|
|
|
Install with [npm](https://www.npmjs.com/): |
|
|
|
```sh |
|
$ npm install lazy-cache --save |
|
``` |
|
|
|
If you use webpack and are experiencing issues, try using [unlazy-loader](https://github.com/doowb/unlazy-loader), a webpack loader that fixes the bug that prevents webpack from working with native javascript getters. |
|
|
|
## Usage |
|
|
|
```js |
|
var utils = require('lazy-cache')(require); |
|
``` |
|
|
|
**Use as a property on `lazy`** |
|
|
|
The module is also added as a property to the `lazy` function |
|
so it can be called without having to call a function first. |
|
|
|
```js |
|
var utils = require('lazy-cache')(require); |
|
|
|
// `npm install glob` |
|
utils('glob'); |
|
|
|
// glob sync |
|
console.log(utils.glob.sync('*.js')); |
|
|
|
// glob async |
|
utils.glob('*.js', function (err, files) { |
|
console.log(files); |
|
}); |
|
``` |
|
|
|
**Use as a function** |
|
|
|
```js |
|
var utils = require('lazy-cache')(require); |
|
var glob = utils('glob'); |
|
|
|
// `glob` is a now a function that may be called when needed |
|
glob().sync('foo/*.js'); |
|
``` |
|
|
|
## Aliases |
|
|
|
An alias may be passed as the second argument if you don't want to use the automatically camel-cased variable name. |
|
|
|
**Example** |
|
|
|
```js |
|
var utils = require('lazy-cache')(require); |
|
|
|
// alias `ansi-yellow` as `yellow` |
|
utils('ansi-yellow', 'yellow'); |
|
console.log(utils.yellow('foo')); |
|
``` |
|
|
|
## Browserify usage |
|
|
|
**Example** |
|
|
|
```js |
|
var utils = require('lazy-cache')(require); |
|
// temporarily re-assign `require` to trick browserify |
|
var fn = require; |
|
require = utils; |
|
// list module dependencies (here, `require` is actually `lazy-cache`) |
|
require('glob'); |
|
require = fn; // restore the native `require` function |
|
|
|
/** |
|
* Now you can use glob with the `utils.glob` variable |
|
*/ |
|
|
|
// sync |
|
console.log(utils.glob.sync('*.js')); |
|
|
|
// async |
|
utils.glob('*.js', function (err, files) { |
|
console.log(files.join('\n')); |
|
}); |
|
``` |
|
|
|
## Kill switch |
|
|
|
In certain rare edge cases it may be necessary to unlazy all lazy-cached dependencies (5 reported cases after ~30 million downloads). |
|
|
|
To force lazy-cache to immediately invoke all dependencies, do: |
|
|
|
```js |
|
process.env.UNLAZY = true; |
|
``` |
|
|
|
## Related projects |
|
|
|
You might also be interested in these projects: |
|
|
|
[lint-deps](https://www.npmjs.com/package/lint-deps): CLI tool that tells you when dependencies are missing from package.json and offers you a… [more](https://www.npmjs.com/package/lint-deps) | [homepage](https://github.com/jonschlinkert/lint-deps) |
|
|
|
## Contributing |
|
|
|
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/lazy-cache/issues/new). |
|
|
|
## Building docs |
|
|
|
Generate readme and API documentation with [verb](https://github.com/verbose/verb): |
|
|
|
```sh |
|
$ npm install verb && npm run docs |
|
``` |
|
|
|
Or, if [verb](https://github.com/verbose/verb) is installed globally: |
|
|
|
```sh |
|
$ verb |
|
``` |
|
|
|
## Running tests |
|
|
|
Install dev dependencies: |
|
|
|
```sh |
|
$ npm install -d && npm test |
|
``` |
|
|
|
## Author |
|
|
|
**Jon Schlinkert** |
|
|
|
* [github/jonschlinkert](https://github.com/jonschlinkert) |
|
* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) |
|
|
|
## License |
|
|
|
Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). |
|
Released under the [MIT license](https://github.com/jonschlinkert/lazy-cache/blob/master/LICENSE). |
|
|
|
*** |
|
|
|
_This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on April 22, 2016._ |