78 lines
2.0 KiB
Groff
78 lines
2.0 KiB
Groff
|
.TH "NPM\-CI" "1" "November 2019" "" ""
|
||
|
.SH "NAME"
|
||
|
\fBnpm-ci\fR \- Install a project with a clean slate
|
||
|
.SS Synopsis
|
||
|
.P
|
||
|
.RS 2
|
||
|
.nf
|
||
|
npm ci
|
||
|
.fi
|
||
|
.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 Description
|
||
|
.P
|
||
|
This command is similar to npm help \fBinstall\fP, 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\. It can be significantly faster than a regular npm
|
||
|
install by skipping certain user\-oriented features\. It is also more strict than
|
||
|
a regular install, which can help catch errors or inconsistencies caused by the
|
||
|
incrementally\-installed local environments of most npm users\.
|
||
|
.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 See Also
|
||
|
.RS 0
|
||
|
.IP \(bu 2
|
||
|
npm help install
|
||
|
.IP \(bu 2
|
||
|
npm help package\-locks
|
||
|
|
||
|
.RE
|