diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/app-root-path/lib/resolve.js | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/app-root-path/lib/resolve.js')
| -rw-r--r-- | node_modules/app-root-path/lib/resolve.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/node_modules/app-root-path/lib/resolve.js b/node_modules/app-root-path/lib/resolve.js new file mode 100644 index 00000000..0acc918d --- /dev/null +++ b/node_modules/app-root-path/lib/resolve.js @@ -0,0 +1,78 @@ +'use strict'; + +// Dependencies +var path = require('path'); + +// Load global paths +var globalPaths = require('module').globalPaths; + +// Guess at NPM's global install dir +var npmGlobalPrefix; +if ('win32' === process.platform) { + npmGlobalPrefix = path.dirname(process.execPath); +} else { + npmGlobalPrefix = path.dirname(path.dirname(process.execPath)); +} +var npmGlobalModuleDir = path.resolve(npmGlobalPrefix, 'lib', 'node_modules'); + +// Save OS-specific path separator +var sep = path.sep; + +// Resolver +module.exports = function resolve(dirname) { + // Check for environmental variable + if (process.env.APP_ROOT_PATH) { + return path.resolve(process.env.APP_ROOT_PATH); + } + + // Defer to main process in electron renderer + if ('undefined' !== typeof window && window.process && 'renderer' === window.process.type) { + var electron = 'electron'; + var remote = require(electron).remote; + return remote.require('app-root-path').path; + } + + // Defer to AWS Lambda when executing there + if (process.env.LAMBDA_TASK_ROOT && process.env.AWS_EXECUTION_ENV) { + return process.env.LAMBDA_TASK_ROOT; + } + + var resolved = path.resolve(dirname); + var alternateMethod = false; + var appRootPath = null; + + // Make sure that we're not loaded from a global include path + // Eg. $HOME/.node_modules + // $HOME/.node_libraries + // $PREFIX/lib/node + globalPaths.forEach(function(globalPath) { + if (!alternateMethod && 0 === resolved.indexOf(globalPath)) { + alternateMethod = true; + } + }); + + // If the app-root-path library isn't loaded globally, + // and node_modules exists in the path, just split __dirname + var nodeModulesDir = sep + 'node_modules'; + if (!alternateMethod && -1 !== resolved.indexOf(nodeModulesDir)) { + var parts = resolved.split(nodeModulesDir); + if (parts.length) { + appRootPath = parts[0]; + parts = null; + } + } + + // If the above didn't work, or this module is loaded globally, then + // resort to require.main.filename (See http://nodejs.org/api/modules.html) + if (alternateMethod || null == appRootPath) { + appRootPath = path.dirname(require.main.filename); + } + + // Handle global bin/ directory edge-case + if (alternateMethod && -1 !== appRootPath.indexOf(npmGlobalModuleDir) && (appRootPath.length - 4) === appRootPath.indexOf(sep + 'bin')) { + appRootPath = appRootPath.slice(0, -4); + } + + // Return + return appRootPath; +}; |
