Giter Club home page Giter Club logo

npm-path's Introduction

npm-path

Get a PATH containing locally installed module executables.

npm-path will get you a PATH with all of the executables available to npm scripts, without booting up all of npm(1).

npm-path will set your PATH to include:

  • All of the node_modules/.bin directories from the current directory, up through all of its parents. This allows you to invoke the executables for any installed modules. e.g. if mocha is installed a dependency of the current module, then mocha will be available on a npm-path generated $PATH.
  • The directory containing the current node executable, so any scripts that invoke node will execute the same node.
  • Current npm's node-gyp directory, so the node-gyp bundled with npm can be used.

Usage

Command-line

# Prints the augmented PATH to the console
> npm-path
# /usr/local/lib/node_modules/npm/bin/node-gyp-bin:.../node_modules/.bin:/.../usr/local/bin:/usr/local/sbin: ... etc

Calling npm-path from the commandline is the equivalent of executing an npm script with the body echo $PATH, but without all of the overhead of booting or depending on npm.

Set PATH

This will set the augmented PATH for the current process environment, or an environment you supply.

var npmPath = require('npm-path')
var PATH = npmPath.PATH // get platform independent PATH key

npmPath(function(err, $PATH) {
  
  // Note: current environment is modified!
  console.log(process.env[PATH] == $PATH) // true
  
  console.log($PATH)
  // /usr/local/lib/node_modules/npm/bin/node-gyp-bin:/.../.bin:/usr/local/bin: ...etc
  
})

// more explicit alternative syntax
npmPath.set(function(err, $PATH) {
  // ...
})

Synchronous Alternative

//  supplying no callback will execute method synchronously
var $PATH = npmPath()
console.log($PATH)

// more explicit alternative syntax
$PATH = npmPath.setSync()

Optional Options

var options = {
  env: process.env, // default.
  cwd: process.cwd() // default.
}

npmPath(options, function(err, $PATH) {
  // ...
})

npmPath.setSync(options)

  // ...

Get PATH

This will get npm augmented PATH, but does not modify the PATH in the environment. Takes the exact same options as set.

npmPath.get(function(err, $PATH) {
  console.log($PATH)
  
  // Note: current environment is NOT modified!
  console.log(process.env[PATH] == $PATH) // false
})

// options is optional, takes same options as `npmPath.set`
npmPath.get(options, function(err, $PATH) {
  console.log($PATH)
})

Synchronous Alternative

//  supplying no callback will execute method synchronously
var $PATH = npmPath.get()
console.log($PATH)
console.log(process.env[PATH] == $PATH) // false

// more explicit alternative syntax
$PATH = npmPath.getSync()

Options

Both set and get take an optional options object, with optional env & cwd keys.

  • Set options.env if you wish to use something other than process.env (the default)
  • Set options.cwd if you wish to use something other than process.cwd() (the default)

There's also a options.npm property which you can set if you want node-gyp to be sourced from an alternative npm installation.

Get the PATH environment variable key

// windows calls it's path "Path" usually, but this is not guaranteed.
npmPath.PATH // 'Path', probably

// rest of the world
npmPath.PATH // 'PATH'

Example Usage

process.env[npmPath.PATH] // get path environment variable

// set path environment variable manually
process.env[npmPath.PATH] = npmPath.get()

// set path environment variable automatically
npmPath()

Get the PATH separator

// windows
npmPath.SEPARATOR // ';'

// rest of the world
npmPath.SEPARATOR // ':'

Credit

Path lookup code adapted directly from npm.

Thanks to Jordan Harband for his hard work adapting this to work on node 0.8.

License

MIT

npm-path's People

Contributors

ljharb avatar nowells avatar piranna avatar timoxley avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.