Show More
Commit Description:
add model solution
Commit Description:
add model solution
References:
File last commit:
Show/Diff file:
Action:
node_modules/browser-resolve/README.md
| 146 lines
| 3.7 KiB
| text/x-minidsrc
| MarkdownLexer
|
r789 | # browser-resolve [](https://travis-ci.org/defunctzombie/node-browser-resolve) | |||
node.js resolve algorithm with [browser field](https://github.com/defunctzombie/package-browser-field-spec) support. | ||||
## api | ||||
### resolve(id, opts={}, cb) | ||||
Resolve a module path and call `cb(err, path [, pkg])` | ||||
Options: | ||||
* `basedir` - directory to begin resolving from | ||||
* `browser` - the 'browser' property to use from package.json (defaults to 'browser') | ||||
* `filename` - the calling filename where the `require()` call originated (in the source) | ||||
* `modules` - object with module id/name -> path mappings to consult before doing manual resolution (use to provide core modules) | ||||
* `packageFilter` - transform the parsed `package.json` contents before looking at the `main` field | ||||
* `paths` - `require.paths` array to use if nothing is found on the normal `node_modules` recursive walk | ||||
Options supported by [node-resolve](https://github.com/substack/node-resolve#resolveid-opts-cb) can be used. | ||||
### resolve.sync(id, opts={}) | ||||
Same as the async resolve, just uses sync methods. | ||||
Options supported by [node-resolve](https://github.com/substack/node-resolve#resolvesyncid-opts) `sync` can be used. | ||||
## basic usage | ||||
you can resolve files like `require.resolve()`: | ||||
``` js | ||||
var resolve = require('browser-resolve'); | ||||
resolve('../', { filename: __filename }, function(err, path) { | ||||
console.log(path); | ||||
}); | ||||
``` | ||||
``` | ||||
$ node example/resolve.js | ||||
/home/substack/projects/node-browser-resolve/index.js | ||||
``` | ||||
## core modules | ||||
By default, core modules (http, dgram, etc) will return their same name as the path. If you want to have specific paths returned, specify a `modules` property in the options object. | ||||
``` js | ||||
var shims = { | ||||
http: '/your/path/to/http.js' | ||||
}; | ||||
var resolve = require('browser-resolve'); | ||||
resolve('fs', { modules: shims }, function(err, path) { | ||||
console.log(path); | ||||
}); | ||||
``` | ||||
``` | ||||
$ node example/builtin.js | ||||
/home/substack/projects/node-browser-resolve/builtin/fs.js | ||||
``` | ||||
## browser field | ||||
browser-specific versions of modules | ||||
``` js | ||||
{ | ||||
"name": "custom", | ||||
"version": "0.0.0", | ||||
"browser": { | ||||
"./main.js": "custom.js" | ||||
}, | ||||
"chromeapp": { | ||||
"./main.js": "custom-chromeapp.js" | ||||
} | ||||
} | ||||
``` | ||||
``` js | ||||
var resolve = require('browser-resolve'); | ||||
var parent = { filename: __dirname + '/custom/file.js' /*, browser: 'chromeapp' */ }; | ||||
resolve('./main.js', parent, function(err, path) { | ||||
console.log(path); | ||||
}); | ||||
``` | ||||
``` | ||||
$ node example/custom.js | ||||
/home/substack/projects/node-browser-resolve/example/custom/custom.js | ||||
``` | ||||
## skip | ||||
You can skip over dependencies by setting a | ||||
[browser field](https://gist.github.com/defunctzombie/4339901) | ||||
value to `false`: | ||||
``` json | ||||
{ | ||||
"name": "skip", | ||||
"version": "0.0.0", | ||||
"browser": { | ||||
"tar": false | ||||
} | ||||
} | ||||
``` | ||||
This is handy if you have code like: | ||||
``` js | ||||
var tar = require('tar'); | ||||
exports.add = function (a, b) { | ||||
return a + b; | ||||
}; | ||||
exports.parse = function () { | ||||
return tar.Parse(); | ||||
}; | ||||
``` | ||||
so that `require('tar')` will just return `{}` in the browser because you don't | ||||
intend to support the `.parse()` export in a browser environment. | ||||
``` js | ||||
var resolve = require('browser-resolve'); | ||||
var parent = { filename: __dirname + '/skip/main.js' }; | ||||
resolve('tar', parent, function(err, path) { | ||||
console.log(path); | ||||
}); | ||||
``` | ||||
``` | ||||
$ node example/skip.js | ||||
/home/substack/projects/node-browser-resolve/empty.js | ||||
``` | ||||
# license | ||||
MIT | ||||
# upgrade notes | ||||
Prior to v1.x this library provided shims for node core modules. These have since been removed. If you want to have alternative core modules provided, use the `modules` option when calling resolve. | ||||
This was done to allow package managers to choose which shims they want to use without browser-resolve being the central point of update. | ||||