UNPKG

612 BJavaScriptView Raw
1/**
2 * Require a module if possible.
3 * @memberof module:coz/lib
4 * @function _requireSafely
5 * @param {string} name - Name to require
6 * @private
7 */
8
9'use strict'
10
11const path = require('path')
12
13/** @lends _requireSafely */
14function _requireSafely (name) {
15 let requirable = !!name && (typeof name === 'string')
16 if (!requirable) {
17 return null
18 }
19 try {
20 require.resolve(name)
21 return require(name)
22 } catch (e) {
23 let resolved = path.resolve(name)
24 if (resolved !== name) {
25 return _requireSafely(resolved)
26 } else {
27 return null
28 }
29 }
30}
31
32module.exports = _requireSafely;