/nodenv-package-json-engine

Activate a nodenv node version from package.json engines

Primary LanguageShell

nodenv-package-json-engine

This is a plugin for nodenv that detects the Node version based on the engines field of the current tree's package.json file. The $NODENV_VERSION environment variable (set with nodenv shell) and .node-version files still take precedence.

When engines is configured with a range this plugin chooses the greatest installed version matching the range, or exits with an error if none match.

Build Status

Installation

Installing with Git

$ git clone https://github.com/nodenv/nodenv-package-json-engine.git $(nodenv root)/plugins/nodenv-package-json-engine

Installing with Homebrew

Mac OS X users can install many nodenv plugins with Homebrew.

This is the recommended method of installation if you installed nodenv with Homebrew.

$ brew tap nodenv/nodenv
$ brew install nodenv-package-json-engine

Usage

Once you've installed the plugin you can verify that it's working by cding into a project that has a package.json file with engines and does not have a .node-version file. From anywhere in the project's tree, run nodenv which node.

Contributing

To run tests, install bats and nodenv, then run bats test in the base directory of this plugin

Credits

package.json inspection and SemVer integration heavily inspired by nvmish [1] [2].

Nodenv plugin hooks integration and tests heavily inspired by rbenv-bundler-ruby-version.

Shell semver range support provided by sh-semver.