This repository has been archived by the owner on Aug 11, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
409 additions
and
33 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
npm-ci(1) -- Install a project with a clean slate | ||
=================================== | ||
|
||
## SYNOPSIS | ||
|
||
npm ci | ||
|
||
## EXAMPLE | ||
|
||
Make sure you have a package-lock and an up-to-date install: | ||
|
||
``` | ||
$ cd ./my/npm/project | ||
$ npm install | ||
added 154 packages in 10s | ||
$ ls | grep package-lock | ||
``` | ||
|
||
Run `npm ci` in that project | ||
|
||
``` | ||
$ npm ci | ||
added 154 packages in 5s | ||
``` | ||
|
||
Configure Travis to build using `npm ci` instead of `npm install`: | ||
|
||
``` | ||
# .travis.yml | ||
install: | ||
- npm ci | ||
# keep the npm cache around to speed up installs | ||
cache: | ||
directories: | ||
- "$HOME/.npm" | ||
``` | ||
|
||
## DESCRIPTION | ||
|
||
This command is similar to `npm-install(1)`, except it's meant to be used in | ||
automated environments such as test platforms, continuous integration, and | ||
deployment. 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. | ||
|
||
Concretely, the main differences between an `npm install` call and an `npm ci` | ||
call are: | ||
|
||
* The resulting `node_modules/` is not meant for interactive development. | ||
* The project **must** have an existing `package-lock.json` or `npm-shrinkwrap.json`. | ||
* If dependencies in the package lock do not match those in `package.json`, `npm ci` will exit with an error, instead of updating the package lock. | ||
* `npm ci` can only install entire projects at a time: individual dependencies cannot be added with this command. | ||
* If a `node_modules` is already present, it will be automatically removed before `npm ci` begins its install. | ||
* It will never write to `package.json` or any of the package-locks: installs are essentially frozen. | ||
|
||
## SEE ALSO | ||
|
||
* npm-install(1) | ||
* npm-package-locks(5) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
'use strict' | ||
|
||
const Installer = require('libcipm') | ||
const lifecycleOpts = require('./config/lifecycle.js') | ||
const npm = require('./npm.js') | ||
const npmlog = require('npmlog') | ||
const pacoteOpts = require('./config/pacote.js') | ||
|
||
ci.usage = 'npm ci' | ||
|
||
ci.completion = (cb) => cb(null, []) | ||
|
||
Installer.CipmConfig.impl(npm.config, { | ||
get: npm.config.get, | ||
set: npm.config.set, | ||
toLifecycle (moreOpts) { | ||
return lifecycleOpts(moreOpts) | ||
}, | ||
toPacote (moreOpts) { | ||
return pacoteOpts(moreOpts) | ||
} | ||
}) | ||
|
||
module.exports = ci | ||
function ci (args, cb) { | ||
return new Installer({ | ||
config: npm.config, | ||
log: npmlog | ||
}) | ||
.run() | ||
.then( | ||
(details) => console.error(`added ${details.pkgCount} packages in ${ | ||
details.runTime / 1000 | ||
}s`) | ||
) | ||
.then(() => cb(), cb) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
5e4de9c
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will
npm ci
have any conflict if I already have aci
script in mypackage.json
file?5e4de9c
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You run your ci script with
npm run ci
isntead ofnpm ci
. So should be no conflict.