From d5c0e941660e47eb0cf989831d11bb4cbe9068bf Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Fri, 1 Aug 2014 01:26:33 -0700 Subject: [PATCH] Adding `nvm exec` command. --- README.markdown | 6 +++++- nvm.sh | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/README.markdown b/README.markdown index 4c2995d..e99abfe 100644 --- a/README.markdown +++ b/README.markdown @@ -38,7 +38,7 @@ Often I also put in a line to use a specific version of node. ## Usage You can create an `.nvmrc` file containing version number in the project root directory (or any parent directory). -`nvm use`, `nvm install`, and `nvm run` will all respect an `.nvmrc` file. +`nvm use`, `nvm install`, `nvm exec`, and `nvm run` will all respect an `.nvmrc` file. To download, compile, and install the latest v0.10.x release of node, do this: @@ -52,6 +52,10 @@ Or you can just run it: nvm run 0.10 --version +Or, you can run any arbitrary command in the node environment: + + nvm exec 0.10 node --version + If you want to see what versions are installed: nvm ls diff --git a/nvm.sh b/nvm.sh index 2ef65bd..e9de28c 100644 --- a/nvm.sh +++ b/nvm.sh @@ -639,6 +639,29 @@ nvm() { echo "Running node $VERSION" NODE_PATH=$RUN_NODE_PATH $NVM_DIR/$VERSION/bin/node "$@" ;; + "exec" ) + shift + + local provided_version + provided_version=$1 + if [ -n "$provided_version" ]; then + VERSION=`nvm_version $provided_version` + if [ $VERSION = "N/A" ]; then + provided_version='' + nvm_rc_version + VERSION=`nvm_version $NVM_RC_VERSION` + else + shift + fi + fi + + if [ ! -d "$NVM_DIR/$VERSION" ]; then + echo "$VERSION version is not installed yet" >&2 + return 1 + fi + echo "Running node $VERSION" + NODE_VERSION=$VERSION $NVM_DIR/nvm-exec "$@" + ;; "ls" | "list" ) local NVM_LS_OUTPUT local NVM_LS_EXIT_CODE