命令行别名

前言

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

Windows 别名配置

新建一个 alias.bat 的文件

Copy
doskey s = yarn start

配置注册表

通过 win + r 调出运行窗口，输入 regedit 调出注册表

然后使用 ctrl + f，搜索 Command Processor

在 Command Processor 下，新建 => 字符串值

数值名称设置为 AutoRun，数值数据为 alias.bat 的绝对路径

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

扩展

调用多个命令

比如一键 push 操作

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

查看配置

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

Copy
doskey command = doskey /macros

传递一个参数

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

Copy
doskey n = node $*

传递多个参数

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

Copy
doskey v = npm $1 $t node $2

Linux/Mac 别名配置

打开或新建 ~/.zshrc 文件

Copy
alias s="nr start"

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

注意：

如果是 bash 类型的终端，就是 ~/.bash_profile 文件

Mac 里的别名配置语法稍微严格一点，比如 “=” 的前后是不能留有空格的

扩展

调用多个命令

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

传递参数

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

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

更优雅的方式

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

自定义命令

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

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

./lib/install.js

Copy
#!/usr/bin/env node

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

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

命令增强

使用 @antfu/ni 来运行

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

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

开源分享

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

i => ni【安装依赖】

b => nr build【打包】

e => nr e2e【运行 e2e 测试】

t => nr test【运行单元测试】

s => nr start 【或者 nr dev，优先运行 dev】

copen 仓库地址 => 克隆仓库后马上用 vscode 打开

cbranch => 清除所有远程仓库里不存在的本地分支

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