zsh-node_modules-bin-update-path() { if [[ ! -x $(which npm) ]]; then # there is no npm return fi # figure out the path NPM_BIN_PATH=$(npm bin) if [[ ! -d $NPM_BIN_PATH ]]; then # there is no dir at bin path return fi if [[ -n $OLD_NPM_BIN_PATH && $NPM_BIN_PATH == $OLD_NPM_BIN_PATH ]]; then # bin path did not change return fi if [[ -n $OLD_NPM_BIN_PATH ]]; then # remove old bin path from $path path[$path[(i)$OLD_NPM_BIN_PATH]]=() fi # add new bin path to $path path=($NPM_BIN_PATH $path) export PATH # for next run export OLD_NPM_BIN_PATH=$NPM_BIN_PATH } precmd_functions+="zsh-node_modules-bin-update-path"