summaryrefslogtreecommitdiff
path: root/deps/npm/doc/api/npm.md
blob: a2f034c4b7a4dd0d9e50c1c3cc37edb4f21b2312 (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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
npm(3) -- node package manager
==============================

## SYNOPSIS

    var npm = require("npm")
    npm.load(configObject, function (er, npm) {
      // use the npm object, now that it's loaded.

      npm.config.set(key, val)
      val = npm.config.get(key)

      console.log("prefix = %s", npm.prefix)

      npm.commands.install(["package"], cb)
    })

## VERSION

@VERSION@

## DESCRIPTION

This is the API documentation for npm.
To find documentation of the command line
client, see `npm(1)`.

Prior to using npm's commands,
`npm.load()` must be called with an object hash of
top-level configs.  In the npm command line client,
this set of configs is parsed from the command line options.  Additional
configuration params are loaded from two configuration files.  See
`npm-config(1)` for more information.

After that, each of the functions are accessible in the
commands object: `npm.commands.<cmd>`.  See `npm-index(1)` for a list of
all possible commands.

All commands on the command object take an **array** of positional argument
**strings**. The last argument to any function is a callback. Some
commands take other optional arguments.

Configs cannot currently be set on a per function basis, as each call to
npm.config.set will change the value for *all* npm commands in that process.

To find API documentation for a specific command, run the `npm apihelp`
command.

## METHODS AND PROPERTIES

* `npm.load(configs, cb)`

    Load the configuration params, and call the `cb` function once the
    globalconfig and userconfig files have been loaded as well, or on
    nextTick if they've already been loaded.

* `npm.config`

    An object for accessing npm configuration parameters.

    * `npm.config.get(key)`
    * `npm.config.set(key, val)`
    * `npm.config.del(key)`

* `npm.dir` or `npm.root`

    The `node_modules` directory where npm will operate.

* `npm.prefix`

    The prefix where npm is operating.  (Most often the current working
    directory.)

* `npm.cache`

    The place where npm keeps JSON and tarballs it fetches from the
    registry (or uploads to the registry).

* `npm.tmp`

    npm's temporary working directory.

* `npm.deref`

    Get the "real" name for a command that has either an alias or
    abbreviation.

## MAGIC

For each of the methods in the `npm.commands` hash, a method is added to
the npm object, which takes a set of positional string arguments rather
than an array and a callback.

If the last argument is a callback, then it will use the supplied
callback.  However, if no callback is provided, then it will print out
the error or results.

For example, this would work in a node repl:

    > npm = require("npm")
    > npm.load()  // wait a sec...
    > npm.install("dnode", "express")

Note that that *won't* work in a node program, since the `install`
method will get called before the configuration load is completed.

## ABBREVS

In order to support `npm ins foo` instead of `npm install foo`, the
`npm.commands` object has a set of abbreviations as well as the full
method names.  Use the `npm.deref` method to find the real name.

For example:

    var cmd = npm.deref("unp") // cmd === "unpublish"