npm-utils

Async NPM shell commands

npm-utils

Async NPM shell commands: install, test, etc.

var npmUtils = require('npm-utils');
npmUtils.version()
  .then(function (semver) {
    console.log('NPM version %s', semver);
  });
path() // returns immediately path to npm command 
install({
  name: string,
  version: string (optional),
  prefix: string (optional), // folder path prefix 
  passThroughData: obj (optional),
  registry: string (optional) // registry url, 
  flags: ['--save', '--verbose'] // list of command line flags to pass to NPM 
})
 
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() // returns a promise, resolved with NPM version string 
test() // spawns npm test command 
test('grunt test'); // spawns new command "grunt test" 

The child test process will inherit output streams from the parent.

registryUrl(); // returns a promise 
// same as `npm config get registry` - which only uses 
// .npmrc in the CURRENT folder (if there is .npmrc file) 
publish({ tag: '...'});
// the tag is optional 

Loads package.json from a given folder

var pkg = npm.getPackage(folder);
console.log('%s version %s', pkg.name, pkg.version);

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

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=]

Runs npm version [major | minor | patch] command.

incrementVersion({
  increment: 'major|minor|patch',
  noGit: true // default false = Git commit happens 
})

See npm help version - but we only support increments, not absolute values.

Run the command with DEBUG=npm-utils environment variable set, this package uses debug

Author: Gleb Bahmutov @ 2013 @bahmutov

License: MIT - do anything with the code, but don't blame me if it does not work.