[![NPM Version](https://img.shields.io/npm/v/identify-resource.svg?style=flat)](https://npmjs.org/package/identify-resource)
[![Build Status](https://travis-ci.org/popeindustries/identify-resource.png)](https://travis-ci.org/popeindustries/identify-resource)

# identify-resource

Resolve the file paths to js, css, and html dependencies.

## Usage

**resolve(sourcepath, id, [options])**: resolve the path for `id` from `sourcepath`. 

`id` can be an absolute filepath, relative filepath, "node_modules" reference, or "node_modules" file reference.

Available `options` include:

- `fileExtensions`: hash of valid file extensions by type, used to resolve ids with missing file extension (default `{ js: 'js', 'json', css: 'css', html: 'html' }`)
- `sources`: array of source directories (in addition to cwd and "node_modules") in which to search for files (default `[]`)

```bash
$ npm install identify-resource
```

`/projects/myproject/index.js`
```js
var bar = require('./bar')
  , boo = require('boo')
  , http = require('http');
```

`/project/myproject/index.css`
```css
@import 'bar';
```

`/projects/myproject/node_modules/boo/package.json`
```json
{
  "name": "boo",
  "version": "1.0.0",
  "main": "index.js"
}
```

```js
var resolve = require('identify-resource').resolve;

// Resolve relative path
console.log(resolve('/projects/myproject/index.js', './bar')); 
//=> '/projects/myproject/bar.js'

// Resolve node_modules
console.log(resolve('/projects/myproject/index.js', 'boo')); 
//=> '/projects/myproject/node_modules/boo/index.js'

// Resolve native node modules
console.log(resolve('/projects/myproject/index.js', 'http')); 
//=> 'false'

// Resolve css
console.log(resolve('/projects/myproject/index.css', 'bar'));
//=> '/projects/myproject/bar.css'
```

Configuring the package.json `browser` field enables overriding default behaviour:

`/projects/myproject/package.json`
```json
{
  "name": "myproject",
  "version": "1.0.0",
  "main": "index.js",
  "browser": {
    "http": "./lib/http.js"
  }
}
```

```js
// Alias native module
console.log(resolve('/projects/myproject/index.js', 'http')); 
//=> '/projects/myproject/lib/http.js'
```

See [here](https://gist.github.com/defunctzombie/4339901) for more details on using the `browser` field.

**identify(filepath, [options])**: retrieve the id for `filepath`. Id's are resolved from the cwd or "node_modules", as appropriate.

```js
var identify = require('identify-resouce').identify;

identify('/projects/myproject/bar.js'); //=> 'bar.js'
identify('/projects/myproject/boo/index.js'); //=> 'boo/index.js#1.0.0'
identify('/projects/myproject/bar.css'); //=> 'bar.css'
```

**hasMultipleVersions(id)**: determine if more than one version of `id` exists in resolve cache

**clearCache()**: clear the resolve cache