summaryrefslogtreecommitdiff
path: root/deps/npm/man/man1/npm-ci.1
blob: 6c2604bb825b6323e4810f3ca597664b92902ce0 (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
.TH "NPM\-CI" "1" "March 2021" "" ""
.SH "NAME"
\fBnpm-ci\fR \- Install a project with a clean slate
.SS Synopsis
.P
.RS 2
.nf
npm ci
.fi
.RE
.SS Description
.P
This command is similar to \fBnpm install\fP \fI/cli\-commands/install\fR, except
it's meant to be used in automated environments such as test platforms,
continuous integration, and deployment \-\- or any situation where you want
to make sure you're doing a clean install of your dependencies\.
.P
\fBnpm ci\fP will be significantly faster when:
.RS 0
.IP \(bu 2
There is a \fBpackage\-lock\.json\fP or \fBnpm\-shrinkwrap\.json\fP file\.
.IP \(bu 2
The \fBnode_modules\fP folder is missing or empty\.

.RE
.P
In short, the main differences between using \fBnpm install\fP and \fBnpm ci\fP are:
.RS 0
.IP \(bu 2
The project \fBmust\fR have an existing \fBpackage\-lock\.json\fP or
\fBnpm\-shrinkwrap\.json\fP\|\.
.IP \(bu 2
If dependencies in the package lock do not match those in \fBpackage\.json\fP,
\fBnpm ci\fP will exit with an error, instead of updating the package lock\.
.IP \(bu 2
\fBnpm ci\fP can only install entire projects at a time: individual
dependencies cannot be added with this command\.
.IP \(bu 2
If a \fBnode_modules\fP is already present, it will be automatically removed
before \fBnpm ci\fP begins its install\.
.IP \(bu 2
It will never write to \fBpackage\.json\fP or any of the package\-locks:
installs are essentially frozen\.

.RE
.SS Example
.P
Make sure you have a package\-lock and an up\-to\-date install:
.P
.RS 2
.nf
$ cd \./my/npm/project
$ npm install
added 154 packages in 10s
$ ls | grep package\-lock
.fi
.RE
.P
Run \fBnpm ci\fP in that project
.P
.RS 2
.nf
$ npm ci
added 154 packages in 5s
.fi
.RE
.P
Configure Travis to build using \fBnpm ci\fP instead of \fBnpm install\fP:
.P
.RS 2
.nf
# \.travis\.yml
install:
\- npm ci
# keep the npm cache around to speed up installs
cache:
  directories:
  \- "$HOME/\.npm"
.fi
.RE
.SS See Also
.RS 0
.IP \(bu 2
npm help install
.IP \(bu 2
npm help package\-lock\.json

.RE