resolve-from
Advanced tools
Comparing version 2.0.0 to 3.0.0
40
index.js
'use strict'; | ||
var path = require('path'); | ||
var Module = require('module'); | ||
const path = require('path'); | ||
const Module = require('module'); | ||
module.exports = function (fromDir, moduleId) { | ||
if (typeof fromDir !== 'string' || typeof moduleId !== 'string') { | ||
throw new TypeError('Expected `fromDir` and `moduleId` to be a string'); | ||
const resolveFrom = (fromDir, moduleId, silent) => { | ||
if (typeof fromDir !== 'string') { | ||
throw new TypeError(`Expected \`fromDir\` to be of type \`string\`, got \`${typeof fromDir}\``); | ||
} | ||
if (typeof moduleId !== 'string') { | ||
throw new TypeError(`Expected \`moduleId\` to be of type \`string\`, got \`${typeof moduleId}\``); | ||
} | ||
fromDir = path.resolve(fromDir); | ||
const fromFile = path.join(fromDir, 'noop.js'); | ||
var fromFile = path.join(fromDir, 'noop.js'); | ||
const resolveFileName = () => Module._resolveFilename(moduleId, { | ||
id: fromFile, | ||
filename: fromFile, | ||
paths: Module._nodeModulePaths(fromDir) | ||
}); | ||
try { | ||
return Module._resolveFilename(moduleId, { | ||
id: fromFile, | ||
filename: fromFile, | ||
paths: Module._nodeModulePaths(fromDir) | ||
}); | ||
} catch (err) { | ||
return null; | ||
if (silent) { | ||
try { | ||
return resolveFileName(); | ||
} catch (err) { | ||
return null; | ||
} | ||
} | ||
return resolveFileName(); | ||
}; | ||
module.exports = (fromDir, moduleId) => resolveFrom(fromDir, moduleId); | ||
module.exports.silent = (fromDir, moduleId) => resolveFrom(fromDir, moduleId, true); |
{ | ||
"name": "resolve-from", | ||
"version": "2.0.0", | ||
"description": "Resolve the path of a module like require.resolve() but from a given path", | ||
"version": "3.0.0", | ||
"description": "Resolve the path of a module like `require.resolve()` but from a given path", | ||
"license": "MIT", | ||
@@ -13,3 +13,3 @@ "repository": "sindresorhus/resolve-from", | ||
"engines": { | ||
"node": ">=0.10.0" | ||
"node": ">=4" | ||
}, | ||
@@ -29,2 +29,3 @@ "scripts": { | ||
"like", | ||
"import", | ||
"path" | ||
@@ -31,0 +32,0 @@ ], |
# resolve-from [![Build Status](https://travis-ci.org/sindresorhus/resolve-from.svg?branch=master)](https://travis-ci.org/sindresorhus/resolve-from) | ||
> Resolve the path of a module like [`require.resolve()`](http://nodejs.org/api/globals.html#globals_require_resolve) but from a given path | ||
> Resolve the path of a module like [`require.resolve()`](https://nodejs.org/api/globals.html#globals_require_resolve) but from a given path | ||
Unlike `require.resolve()` it returns `null` instead of throwing when the module can't be found. | ||
## Install | ||
@@ -20,3 +18,3 @@ | ||
// there's a file at `./foo/bar.js` | ||
// There is a file at `./foo/bar.js` | ||
@@ -32,2 +30,8 @@ resolveFrom('foo', './bar'); | ||
Like `require()`, throws when the module can't be found. | ||
### resolveFrom.silent(fromDir, moduleId) | ||
Returns `null` instead of throwing when the module can't be found. | ||
#### fromDir | ||
@@ -48,3 +52,3 @@ | ||
Create a partial using a bound function if you want to require from the same `fromDir` multiple times: | ||
Create a partial using a bound function if you want to resolve from the same `fromDir` multiple times: | ||
@@ -59,4 +63,13 @@ ```js | ||
## Related | ||
- [resolve-cwd](https://github.com/sindresorhus/resolve-cwd) - Resolve the path of a module from the current working directory | ||
- [req-from](https://github.com/sindresorhus/req-from) - Require a module from a given path | ||
- [req-cwd](https://github.com/sindresorhus/req-cwd) - Require a module from the current working directory | ||
- [resolve-pkg](https://github.com/sindresorhus/resolve-pkg) - Resolve the path of a package regardless of it having an entry point | ||
- [lazy-req](https://github.com/sindresorhus/lazy-req) - Require modules lazily | ||
## License | ||
MIT © [Sindre Sorhus](http://sindresorhus.com) | ||
MIT © [Sindre Sorhus](https://sindresorhus.com) |
4391
28
72