1
0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2024-11-23 23:03:02 +08:00
ohmyzsh/plugins/npm/npm.plugin.zsh
Alex Matheson ce9104c4f3
feat(npm): toggle npm install / npm uninstall by pressing F2 twice (#9717)
Co-authored-by: Marc Cornellà <hello@mcornella.com>
2021-12-29 14:12:52 +01:00

112 lines
2.7 KiB
Bash

(( $+commands[npm] )) && {
rm -f "${ZSH_CACHE_DIR:-$ZSH/cache}/npm_completion"
_npm_completion() {
local si=$IFS
compadd -- $(COMP_CWORD=$((CURRENT-1)) \
COMP_LINE=$BUFFER \
COMP_POINT=0 \
npm completion -- "${words[@]}" \
2>/dev/null)
IFS=$si
}
compdef _npm_completion npm
}
# Install dependencies globally
alias npmg="npm i -g "
# npm package names are lowercase
# Thus, we've used camelCase for the following aliases:
# Install and save to dependencies in your package.json
# npms is used by https://www.npmjs.com/package/npms
alias npmS="npm i -S "
# Install and save to dev-dependencies in your package.json
# npmd is used by https://github.com/dominictarr/npmd
alias npmD="npm i -D "
# Force npm to fetch remote resources even if a local copy exists on disk.
alias npmF='npm i -f'
# Execute command from node_modules folder based on current directory
# i.e npmE gulp
alias npmE='PATH="$(npm bin)":"$PATH"'
# Check which npm modules are outdated
alias npmO="npm outdated"
# Update all the packages listed to the latest version
alias npmU="npm update"
# Check package versions
alias npmV="npm -v"
# List packages
alias npmL="npm list"
# List top-level installed packages
alias npmL0="npm ls --depth=0"
# Run npm start
alias npmst="npm start"
# Run npm test
alias npmt="npm test"
# Run npm scripts
alias npmR="npm run"
# Run npm publish
alias npmP="npm publish"
# Run npm init
alias npmI="npm init"
# Run npm info
alias npmi="npm info"
# Run npm search
alias npmSe="npm search"
npm_toggle_install_uninstall() {
# Look up to the previous 2 history commands
local line
for line in "$BUFFER" \
"${history[$((HISTCMD-1))]}" \
"${history[$((HISTCMD-2))]}"
do
case "$line" in
"npm uninstall"*)
BUFFER="${line/npm uninstall/npm install}"
(( CURSOR = CURSOR + 2 )) # uninstall -> install: 2 chars removed
;;
"npm install"*)
BUFFER="${line/npm install/npm uninstall}"
(( CURSOR = CURSOR + 2 )) # install -> uninstall: 2 chars added
;;
"npm un "*)
BUFFER="${line/npm un/npm install}"
(( CURSOR = CURSOR + 5 )) # un -> install: 5 chars added
;;
"npm i "*)
BUFFER="${line/npm i/npm uninstall}"
(( CURSOR = CURSOR + 8 )) # i -> uninstall: 8 chars added
;;
*) continue ;;
esac
return 0
done
BUFFER="npm install"
CURSOR=${#BUFFER}
}
zle -N npm_toggle_install_uninstall
# Defined shortcut keys: [F2] [F2]
bindkey -M emacs '^[OQ^[OQ' npm_toggle_install_uninstall
bindkey -M vicmd '^[OQ^[OQ' npm_toggle_install_uninstall
bindkey -M viins '^[OQ^[OQ' npm_toggle_install_uninstall