0.1.0 • Published 10 years ago

is-global v0.1.0

Weekly downloads
1,468
License
-
Repository
github
Last release
10 years ago

is-global

Node.js project

Checks whether Node.js is running a global module

Version: 0.0.1

There are times you need to know whether Node.js is executing a global module, typically when you're writing a third-party module. For these cases this little module can help you.

On Linux the _ environment variable is compared with the process.execPath. Simple, quick and works in all situations because it doesn't depend on the current working directory.

On Windows there are two ways:

  • Synchronous

    	The `PATH` environment variable is used. Node.js scripts running inside `<npm_install_dir>/node_modules` will always return true, e.g.:
    
    	```
    	npm_install_dir = C:\Users\<user>\AppData\Roaming\npm
    	node <npm_install_dir>\node_modules\myscript.js
    	```
    
    	Therefore, don't run scripts inside the npm install directory or this module will always return true. No one does that so you can assume that on Windows platform it detects the global module execution correctly. To ensure that this module doesn't break your code you can put a big warning in your documentation.
  • Asynchronous

    	The approach consists on reading the `process.mainModule.paths[0]` variable and search for the first package.json file, starting in the current path and ending at the `/` root's path. If the first package.json file contains a `bin` property then Node.js is running a global module. Works in all situations. If an I/O error is produced while reading the package.json file the function will silently return false.

This library provides both versions. The first is typically used when you are in a synchronous context, for example inside a constructor function. On Linux both versions use the same described approach, that is, doesn't perform any I/O call.

Installation

npm install is-global

Example

var isGlobal = require ("is-global");
//The result is cached, you don't need to save the result in your application

//Synchronous version
console.log (isGlobal ());

//Asynchronous version
isGlobal (console.log);