UNPKG

819 BJavaScriptView Raw
1'use strict';
2var fs = require('fs');
3var resolve = require('resolve');
4var path = require('path');
5
6/* @private
7 *
8 * @method resolvePkg
9 * @param {String} name
10 * @param {String} dir
11 * @return {String}
12 */
13module.exports = function resolvePkg(name, dir) {
14 if (name.charAt(0) === '/') {
15 return name;
16 }
17 if (name === './') {
18 return path.resolve(name);
19 }
20 try {
21 return resolve.sync(name, {
22 basedir: dir || __dirname,
23 isFile: isDirectory,
24 preserveSymlinks: false
25 });
26 } catch(err) {
27 if (err.code === 'MODULE_NOT_FOUND') {
28 return null;
29 }
30
31 throw err;
32 }
33};
34
35function isDirectory(file) {
36 var stat;
37
38 try {
39 stat = fs.statSync(file);
40 }
41 catch (err) {
42 if (err && err.code === 'ENOENT') {
43 return false;
44 }
45 }
46
47 return stat.isDirectory();
48}