简介
在 Node.js 生态系统中,npm 是一个重要的包管理器,npm 提供了一个命令行工具 npx,用于执行 Node.js 包中的可执行文件。但是 npx 在一些情况下使用不方便,需要输入很长的命令行参数,而那些参数可能是不可见的,或则使用频率较低,或者是太复杂,不容易记忆。Zoltan Kochan 为解决这个问题创建了一个叫做 @zkochan/libnpx 的 npm 包,该包可以帮助我们创建一个缩略词来代替冗长的命令行参数。下面就为大家介绍如何使用该包。
安装
在使用 @zkochan/libnpx 前,需要确保你的机器上已经安装了 Node.js 和 npm。如果没有,可以通过以下两个链接去安装。
- 下载 Node.js:https://nodejs.org/en/
- 下载 npm:https://www.npmjs.com/
安装完成 Node.js 和 npm 后,可以全局安装 @zkochan/libnpx 包,命令如下:
npm i -g @zkochan/libnpx
使用
安装完毕后,就可以来试试使用了。下面以常用的 http-server 命令为例。 如果我们想把 http-server 命令简化成一个字母,比如 hs 命令,可以通过如下命令来实现:
libnpx set hs http-server
这样,当我们在命令行中输入 hs 时,就相当于输入了 http-server 命令。
再次运行 libnpx set hs http-server 命令,就会提示我们 hs 命令已经存在,您是否要覆盖。如果我们想要覆盖,可以加上 -f 参数,如下:
libnpx set hs http-server -f
如果我们想删除一个自定义命令,可以使用如下命令:
libnpx unset hs
高阶使用
除了上述的基本用法外,@zkochan/libnpx 还支持一些更高阶的用法。下面就来看一下。
- 传递参数
hs -p 3000 # 等价于 http-server -p 3000
使用 libnpx 后,我们可以很方便的传递参数,比如:
hs -p 3000
其中,-p 表示 port,也就是监听的端口号。这里传递给 hs 命令后,就会默认传递给 http-server 命令,让它监听在 3000 端口上。
- 嵌套自定义命令
libnpx set s hs -p 8080 # This sets up the "s" command to run "hs -p 8080". libnpx set s1 s -c # This sets up the "s1" command to run "s -c". s1 # This is the equivalent of running "hs -p 8080 -c".
@zkochan/libnpx 允许我们嵌套自定义命令。上面的例子中,我们使用 hs 命令创建了一个叫做 s 的自定义命令,然后又用 s 命令创建了一个叫做 s1 的自定义命令,并且在 s 命令中指定了 -p 参数,监听在 8080 端口上。当我们在命令行中输入 s1 时,就相当于运行了 hs -p 8080 -c 命令,其中 -c 表示读取配置文件。这样,我们就可以很方便地组合和嵌套命令,实现更高级的功能。
- 批量执行命令
libnpx -f bulk-commands.json # This runs all the commands in the "bulk-commands.json" file.
如果我们需要在一次命令中执行多个自定义命令,可以通过 @zkochan/libnpx 的批量执行命令来实现。在 bulk-commands.json 文件中写入以下内容:
{"commands": [ {"cmd": "hs -p 3000", "wait": true}, {"cmd": "echo 'server started'", "wait": false}, {"cmd": "open http://localhost:3000", "wait": false} ]}
上述配置文件中,commands 数组用于存放命令的信息,cmd 用于存放命令行字符串,wait 用于指定是否需要等待上一条命令的执行结果。当我们运行 libnpx -f bulk-commands.json 时,就会顺序执行其中的三个命令:http-server -p 3000,echo 'server started',open http://localhost:3000。
结论
Zoltan Kochan 创建的 @zkochan/libnpx 包可以方便地帮助我们创建自定义命令,在大幅提高我们的开发效率的同时,还提供了嵌套和批量执行等高阶功能,可以帮助我们实现复杂的命令行操作。欢迎大家试着使用该包,提高你的命令行效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/110982