npm-utils
Async NPM shell commands: install, test, etc.
Use
var npmUtils = require('npm-utils');
npmUtils.version()
.then(function (semver) {
console.log('NPM version %s', semver);
});
API
path()
install({
name: string,
version: string (optional),
prefix: string (optional),
passThroughData: obj (optional),
registry: string (optional)
flags: ['--save', '--verbose']
})
returns a promise
Note: the name
could be another folder or a tar archive; passed to npm install <name>
unchanged, that can be any match. See npm help install
version()
test()
test('grunt test');
The child test process will inherit output streams from the parent.
registryUrl();
publish({ tag: '...'});
getPackage
Loads package.json
from a given folder
var pkg = npm.getPackage(folder);
console.log('%s version %s', pkg.name, pkg.version);
pack
Runs npm pack <folder name>
command. Resolves with the name of the generated tarball file.
pack({ folder: 'path/to/folder' })
If folder is not provided, uses the current one
setAuthToken
Please execute the npm login
first!
setAuthToken()
.then(canPublishNow, onError)
Updates the ~/.npmrc
file that can be used by CI servers to publish to NPM.
The file will have the following line added (only the actual registry url will be used)
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
Read the Deploying with npm private modules for details, see
project ci-publish for example how this could be
used to release from CI after successful tests.
Often the source of errors is that the environment does not have NPM_TOKEN
set,
or the .npmrc
file already has the authToken entry for this registry. For example,
when running locally
$ NPM_TOKEN=foo node src/set-auth-token.js
npmrc file already has auth token for registry
//registry.npmjs.org/:_authToken=
[Error: Auth token for registry exists //registry.npmjs.org/:_authToken=]
Troubleshooting
Run the command with DEBUG=npm-utils
environment variable set, this package
uses debug
Small print
Author: Gleb Bahmutov @ 2013 @bahmutov
License: MIT - do anything with the code, but don't blame me if it does not work.