Welcome to mirror list, hosted at ThFree Co, Russian Federation.

load-prefix.js « config « lib - github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 01a9252803b74d6b8f01e118d98a7f5c380b60bd (plain)
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
module.exports = loadPrefix

var findPrefix = require('./find-prefix.js')
var path = require('path')

function loadPrefix (cb) {
  var cli = this.list[0]

  Object.defineProperty(this, 'prefix',
    { set: function (prefix) {
        var g = this.get('global')
        this[g ? 'globalPrefix' : 'localPrefix'] = prefix
      }.bind(this),
      get: function () {
        var g = this.get('global')
        return g ? this.globalPrefix : this.localPrefix
      }.bind(this),
      enumerable: true
    })

  Object.defineProperty(this, 'globalPrefix',
    { set: function (prefix) {
        this.set('prefix', prefix)
      }.bind(this),
      get: function () {
        return path.resolve(this.get('prefix'))
      }.bind(this),
      enumerable: true
    })

  var p
  Object.defineProperty(this, 'localPrefix',
    { set: function (prefix) { p = prefix },
      get: function () { return p },
    enumerable: true })

  // try to guess at a good node_modules location.
  // If we are *explicitly* given a prefix on the cli, then
  // always use that.  otherwise, infer local prefix from cwd.
  if (Object.prototype.hasOwnProperty.call(cli, 'prefix')) {
    p = path.resolve(cli.prefix)
    process.nextTick(cb)
  } else {
    findPrefix(process.cwd(), function (er, found) {
      p = found
      cb(er)
    })
  }
}