命令行工具开发(一)入门

276 阅读4分钟

Hello 大家好,这个是系列教程命令行工具开发的第一篇文章命令行工具开发(一)入门

命令行工具开发(一)入门

作为前端工程师,我们经常与命令行工具交互,比如我们熟悉的npmyarnnrmvue等, 这些工具都是通过命令行来运行的,那么我们能不能自己开发一个命令行工具呢?答案是肯定的,接下来我们就来学习一下如何开发一个命令行工具

开发环境准备

首先,我们需要一个开发环境,这里我们使用Node.js,所以自然要先打开Node.js的官网,下载安装包,安装好Node.js后,我们就可以开始开发了。

创建项目

接下来,我们需要创建一个项目,这里我们使用npm来初始化项目,首先在终端中输入以下命令:

mkdir helloworld-cli
cd helloworld-cli
npm init -y

项目创建后目录结构

helloworld-cli
└── package.json

编写代码

helloworld-cli目录下创建一个index.js文件,这是我们的CLI工具的入口文件,我们可以在其中编写我们的代码。

index.js

#!/usr/bin/env node
console.log('Hello World!');

等等,这个#!/usr/bin/env node是什么意思呢?

#!开头,通常称为shebang或hashbang,用于指定默认情况下运行脚本的解释器路径,在上面的实例中我们指定的解释器是 /usr/bin/env node

#!/usr/bin/env用于告诉系统使用哪个解释器来运行脚本, 怎么指定解释器呢?其实只需要#!/usr/bin/env 解释器名称即可,比如#!/usr/bin/env python表示使用python解释器来运行脚本,#!/usr/bin/env node表示使用Node.js解释器来运行脚本。

node是解释器的名称,env是环境变量的名称,node解释器会从环境变量中查找,如果找到了就使用,如果没找到就报错。

在 package.json 中添加可执行文件

package.json中添加一个bin字段,用于指定可执行文件的位置,比如:

{
  "name": "helloworld-cli",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "bin": {
    "helloworld-cli": "index.js"
  }
}

bin字段是一个对象,其中键是可执行文件的名称,值是可执行文件的路径。在上面的实例中,我们将helloworld-cli命令绑定到index.js文件上。这样,当我们运行helloworld-cli命令时,系统就会自动找到index.js文件并执行它。 在上面的代码中,我们使用了#!/usr/bin/env node来指定这个文件是一个Node.js可执行文件,然后我们输出了Hello World!

运行 CLI 工具

现在,我们可以运行我们的 CLI 工具了。在终端中输入以下命令:

cd helloworld-cli
npm link

这个命令会将我们的 CLI 工具链接到全局环境中,这样我们就可以在任何地方运行它了。如果你要移除这个命令,只需要执行 npm unlink helloworld-cli 即可

接下来,在终端中输入以下命令:

helloworld-cli

你应该会看到以下输出:

Hello World!

恭喜你,你已经成功创建了一个 CLI 工具!

不满足于 Hello World ?

那不如,我们每次运行 helloworld-cli我们给用户说一句吉祥话(彩虹屁🌈)怎么样?

当然可以,我们可以使用一个数组来存储这些吉祥话,然后在每次运行 helloworld-cli 时随机选择一句输出。

#!/usr/bin/env node
// 彩虹屁数组
const caiHongPi = [
    '天涯何处无芳草,你是鲜花不是草。',
    '我做事十拿九稳,现在只差你一吻。',
    '月亮很亮,亮也没用,没用也亮,我喜欢你,喜欢也没用,没用也喜欢',
    '谁的童话书又没合好让公主跑出来了',
    `你笑起来真好看,像春天的花一样`,
    '为什么我脸皮那么厚还是包不住对你的喜欢,一不小心就露馅了',
    '你的眼里有星星✨我的眼里都是你',
    '如果你是五彩的糖,那我就当保护你小小的糖纸',
    '想和你说,今天的云和你,都十分可爱',
    '我真的好喜欢你啊 第一句话是假的 第二句也是。对方申请做您心尖尖上的宝贝,接受请求吗?'
]

// 生成随机数
const randomIndex = Math.floor(Math.random() * 10);
// 随机输出彩虹屁
console.log(caiHongPi[randomIndex]);

接下来,在终端中输入以下命令:

helloworld-cli

你应该会看到以下输出:

彩虹屁.png

当然,我们的 CLI 工具还可以做更多的事情,比如获取天气信息、查询股票价格等等。但是,这些功能需要我们使用更多的库和 API,所以我们将在这个系列教程的后续文章中继续探讨。

欢迎关注我的个人公众号「「小枫学幽默」」一起成长,一起分享生活!!