From af120ab348f2e1a5a39dec035ed9dcf84189a64e Mon Sep 17 00:00:00 2001 From: Biswakalyan Bhuyan Date: Mon, 3 Oct 2022 21:42:20 +0530 Subject: dotfiles --- zsh/oh-my-zsh/plugins/npm/README.md | 48 +++++++++++++ zsh/oh-my-zsh/plugins/npm/npm.plugin.zsh | 111 +++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 zsh/oh-my-zsh/plugins/npm/README.md create mode 100644 zsh/oh-my-zsh/plugins/npm/npm.plugin.zsh (limited to 'zsh/oh-my-zsh/plugins/npm') diff --git a/zsh/oh-my-zsh/plugins/npm/README.md b/zsh/oh-my-zsh/plugins/npm/README.md new file mode 100644 index 0000000..8eafc6d --- /dev/null +++ b/zsh/oh-my-zsh/plugins/npm/README.md @@ -0,0 +1,48 @@ +# npm plugin + +The npm plugin provides completion as well as adding many useful aliases. + +To use it, add npm to the plugins array of your zshrc file: + +```zsh +plugins=(... npm) +``` + +## Aliases + +| Alias | Command | Description | +|:------ |:-----------------------------|:----------------------------------------------------------------| +| `npmg` | `npm i -g` | Install dependencies globally | +| `npmS` | `npm i -S` | Install and save to dependencies in your package.json | +| `npmD` | `npm i -D` | Install and save to dev-dependencies in your package.json | +| `npmF` | `npm i -f` | Force install from remote registries ignoring local cache | +| `npmE` | `PATH="$(npm bin)":"$PATH"` | Run command from node_modules folder based on current directory | +| `npmO` | `npm outdated` | Check which npm modules are outdated | +| `npmU` | `npm update` | Update all the packages listed to the latest version | +| `npmV` | `npm -v` | Check package versions | +| `npmL` | `npm list` | List installed packages | +| `npmL0` | `npm ls --depth=0` | List top-level installed packages | +| `npmst` | `npm start` | Run npm start | +| `npmt` | `npm test` | Run npm test | +| `npmR` | `npm run` | Run npm scripts | +| `npmP` | `npm publish` | Run npm publish | +| `npmI` | `npm init` | Run npm init | +| `npmi` | `npm info` | Run npm info | +| `npmSe` | `npm search` | Run npm search | + +## `npm install` / `npm uninstall` toggle + +The plugin adds a function that toggles between `npm install` and `npm uninstall` in +the current command or the last command, for up to 2 previous commands. **The default +key binding is pressing F2 twice**. + +You can change this key binding by adding the following line to your zshrc file: + +```zsh +bindkey -M emacs '' npm_toggle_install_uninstall +bindkey -M vicmd '' npm_toggle_install_uninstall +bindkey -M viins '' npm_toggle_install_uninstall +``` + +where `` is a key sequence obtained by running `cat` and pressing the keyboard +sequence you want. diff --git a/zsh/oh-my-zsh/plugins/npm/npm.plugin.zsh b/zsh/oh-my-zsh/plugins/npm/npm.plugin.zsh new file mode 100644 index 0000000..6c768d6 --- /dev/null +++ b/zsh/oh-my-zsh/plugins/npm/npm.plugin.zsh @@ -0,0 +1,111 @@ +(( $+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 -- cgit v1.2.3-59-g8ed1b