Alex-Programer

Alex-Programer

随缘博客,不定期更新不确定的内容~
github
twitter

命令行别名

image

前言#

在命令行里,只输入 s ,运行效果可以等价于 yarn start 或者其它的指令,那
将会是很棒的体验,特别是对那些经常使用的命令来说。

Windows 别名配置#

新建一个 alias.bat 的文件#

doskey s = yarn start

配置注册表#

  • 通过 win + r 调出运行窗口,输入 regedit 调出注册表
  • 然后使用 ctrl + f,搜索 Command Processor
  • Command Processor 下,新建 => 字符串值
  • 数值名称设置为 AutoRun,数值数据为 alias.bat 的绝对路径

设置完成后,重启命令行窗口即可生效。之后每次命令的调整,只需要在 alias.bat 文件中处理就好。

扩展#

调用多个命令#

比如一键 push 操作

doskey c = git add . $t git commit -m "update" $t git push

查看配置#

通过 doskey /macros 可以罗列出配置过的快捷指令,觉着麻烦的话,可以定义一个 command 的指令,来协助记忆

doskey command = doskey /macros

传递一个参数#

假如设置一个 n 指向 node 的快捷指令,想要通过 n -v 来查询 node 的版本号,实现参数传递;那么就可以这么定义

doskey n = node $*

传递多个参数#

上面传递一个参数的示例中,$* 指的是传递 n 后面的所有参数。还可以通过 $1$2 .... 这样的写法,来定义形参。比如定义一个 v 的指令,通过 v -v -v。可以同时查看 npmnode 的版本号。也可以根据需要,传递一些不同的参数。

doskey v = npm $1 $t node $2

Linux/Mac 别名配置#

打开或新建 ~/.zshrc 文件#

alias s="nr start"

设置完成后,使用 source ~/.zshrc 更新文件即可生效。之后每次命令的调整,只需要在 ~/.zshrc 文件中处理就好,调整完后一定要记得 source 一下。

注意:

  1. 如果是 bash 类型的终端,就是 ~/.bash_profile 文件
  2. Mac 里的别名配置语法稍微严格一点,比如 “=” 的前后是不能留有空格的

扩展#

调用多个命令#

alias v="npm -v && node -v"

传递参数#

alias 并不支持传递参数,实现传递需要一个函数来处理。下面配置完后,batchParams -v -v 就会分别打印 npmnode 的版本

batchParams() {
  npm "$1"
  node "$2"
}

更优雅的方式#

在处理 windows 的别名配置时,每次启动终端,都会将注册指令重新执行一遍,看上去不够优雅。可以编写一个 node cli 工具来改善。

自定义命令#

先跑通一个 i 命令,表示 npm install。创建目录 cli,初始化 package.json 后,定义如下代码:

{
  // ...
  "bin": {
    "i": "./lib/install.js"
  }
  // ...
}

./lib/install.js

#!/usr/bin/env node

const { spawn } = require("child_process");

// 执行 npm install, 配置 stdio: "inherit" 来继承并显示 npm install 命令运行时的行为,比如打印的日志
spawn("npm", "install", { stdio: "inherit" });

命令增强#

使用 @antfu/ni 来运行

spawn("ni", "", { stdio: "inherit" })

它会自动识别项目到底需要哪个包管理器,并进行安装。

开源分享#

如果经常在 windowsmac 之间切换工作环境,编写一个这样的工具会很方便。我自己就写了一个这样的工具,目前有这些能力:

  • i => ni【安装依赖】
  • b => nr build【打包】
  • e => nr e2e【运行 e2e 测试】
  • t => nr test【运行单元测试】
  • s => nr start 【或者 nr dev,优先运行 dev】
  • copen 仓库地址 => 克隆仓库后马上用 vscode 打开
  • cbranch => 清除所有远程仓库里不存在的本地分支

感兴趣的小伙伴可以 fork 过去自己玩哦。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。