-
Notifications
You must be signed in to change notification settings - Fork 4
/
index.js
52 lines (45 loc) · 1.24 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
'use strict'
var fs = require('fs')
var path = require('path')
var which = require('which')
var GLOBAL_NPM_BIN
var GLOBAL_NPM_PATH
var throwNotFoundError = function () {
var err = new Error("Cannot find module 'npm'")
err.code = 'MODULE_NOT_FOUND'
throw err
}
try {
var ENV = process.env
if (ENV.GLOBAL_NPM_BIN) {
GLOBAL_NPM_BIN = ENV.GLOBAL_NPM_BIN
} else if (ENV.npm_execpath) {
GLOBAL_NPM_BIN = ENV.npm_execpath
} else if ((ENV.NODENV_VERSION === 'system') && ENV.NODENV_ROOT) {
var trimPath = ENV.PATH.replace(path.join(ENV.NODENV_ROOT, 'shims'), '')
GLOBAL_NPM_BIN = fs.realpathSync(which.sync('npm', { path: trimPath }))
} else {
GLOBAL_NPM_BIN = fs.realpathSync(which.sync('npm'))
}
} catch (e) {
throwNotFoundError()
}
GLOBAL_NPM_PATH = process.env.GLOBAL_NPM_PATH || path.join(
GLOBAL_NPM_BIN,
process.platform === 'win32' ? '../node_modules/npm' : '../..'
)
module.exports = (function () {
try {
var npm = require(GLOBAL_NPM_PATH)
if (npm && Object.keys(npm).length) {
return npm
}
} catch (e) {
if (e.code !== 'MODULE_NOT_FOUND') {
throw e
}
}
throwNotFoundError()
})()
module.exports.GLOBAL_NPM_PATH = GLOBAL_NPM_PATH
module.exports.GLOBAL_NPM_BIN = GLOBAL_NPM_BIN